KNN k近邻算法初步使用教程
首先需要安装 :
pip3 install scikit-learn
然后引用:
from sklearn.neighbors import KNeighborsClassifier
基本测试:
x = [[1], [2], [0], [0]] y = [1, 1, 0, 0] # 实例化训练模型 e = KNeighborsClassifier(n_neighbors=2) # 调用方法进行训练 e.fit(x, y) # 预测其他值 ret = e.predict([[3]]) print(ret)
完整案例:
1、引用:
matplotlib.pyplot plt pandas pd sklearn.model_selection train_test_split sklearn.datasets load_iris, fetch_20newsgroups
2、数据获取
iris = load_iris()
数据说明:
data 特征值数据 featrue_names 特征值名称 target 目标值 target_names 目标值名称 DESCR 描述
3、数据拆分
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target,random_state=20,test_size=0.2)
4、数据预处理
数据预处理 归一化 稳定性比较差 容易受异常点影响 基本不用 sklearn.preprocessing MinMaxScaler print(iris.data) transer = MinMaxScaler(feature_range=(0, 1)) data = transer.fit_transform(iris.data) print(data)
数据预处理 标准化 变化为 均值1 标准差1 的范围内,异常点影响小,以后就用这个 sklearn.preprocessing StandardScaler transer2 = StandardScaler() data2 = transer2.fit_transform(iris.data) print(data2)
x_train = transer2.fit_transform(x_train) x_test = transer2.fit_transform(x_test)
5、训练模型
e = KNeighborsClassifier(n_neighbors=5) e.fit(x_train, y_train) 模型训练
6、模型评估
y_pre = e.predict(x_test) print("预测值:\n", y_pre) ret = e.score(x_test, y_test) print("准确率:\n", ret)
优缺点:
大数据量速度慢,高维度数据拟合不好,稀疏数据束手无策
交叉验证网格搜索模型 参数调优
sklearn.model_selection GridSearchCV e = KNeighborsClassifier(=) param_grid = {: [, , , ]} GridSearchCV(e, param_grid,=) e.fit(x_train, y_train) y_pre = e.predict(x_test) (, y_pre) ret = e.score(x_test, y_test) (, ret) (, e.best_estimater_) (, e.best_score_) (, e.cv_results_)
版权声明本文仅代表作者观点,不代表本站立场。本文系作者授权发表,未经许可,不得转载。图文来源网络,侵权删!