ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python机器学习-KNN算法

2021-10-21 11:34:10  阅读:197  来源: 互联网

标签:KNN iris predict python print 算法 train estimator test


K-近邻算法API

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
    • n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数
    • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可选用于计算最近邻居的算法:‘ball_tree’将会使用 BallTree,‘kd_tree’将使用 KDTree。‘auto’将尝试根据传递给fit方法的值来决定最合适的算法。 (不同实现方式影响效率)
#KNN算法
def knn_iris():
    #1.获取数据
    iris=load_iris();
    #2.划分数据集
    x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=6)
    #3.特征工程:标准化
    transfer=StandardScaler()
    x_train=transfer.fit_transform(x_train)
    x_test=transfer.transform(x_test)
    #4.KNN算法预估器
    estimator=KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train,y_train)
    #5.模型评估
    y_predict=estimator.predict(x_test)
    print(y_predict)
    print(y_test==y_predict)
    print(estimator.score(x_test,y_test))
    pass

#KNN算法网格搜索与交叉验证
def knn_iris_gscv():
    #1.获取数据
    iris=load_iris();
    #2.划分数据集
    x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=6)
    #3.特征工程:标准化
    transfer=StandardScaler()
    x_train=transfer.fit_transform(x_train)
    x_test=transfer.transform(x_test)
    #4.KNN算法预估器
    estimator=KNeighborsClassifier()
    #加如网格搜索与交叉验证
    param_grid={"n_neighbors":[1,3,5,7,9,11]}
    estimator=GridSearchCV(estimator,param_grid=param_grid,cv=10)
    estimator.fit(x_train,y_train)
    #5.模型评估
    y_predict=estimator.predict(x_test)
    print(y_predict)
    print(y_test==y_predict)
    print(estimator.score(x_test,y_test))
    print("最佳参数:",estimator.best_params_)
    print("最佳结果:",estimator.best_score_)
    print("最佳估计器:",estimator.best_estimator_)
    print("交叉验证结果:",estimator.cv_results_)
    pass

 

标签:KNN,iris,predict,python,print,算法,train,estimator,test
来源: https://www.cnblogs.com/fengchuiguobanxia/p/15432529.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有