''' KNeighborsClassifier ''' from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier import pickle #pickle模块 from sklearn.externals import joblib #jbolib模块 from sklearn import preprocessing #标准化数据模块 from sklearn.cross_validation import cross_val_score # K折交叉验证模块 import matplotlib.pyplot as plt # 第一步: 加载数据集 iris = datasets.load_iris() # 加载数据集 iris_X = iris.data iris_y = iris.target # 自己制造数据 *** make_XXX X, y = datasets.make_classification(n_samples=300, n_features=2, n_redundant=0, n_informative=2, random_state=22, n_clusters_per_class=1, scale=100) # X, y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=10) # 第二步: 数据集标准化, 划分测试集、训练集 iris_X = preprocessing.scale(iris_X) # 标准化数据 # 随机划分训练集和测试集 7:3 X_train, X_test, y_train, y_test = train_test_split( iris_X, iris_y, test_size=0.3, random_state=0) # 第三步: 训练模型 knn = KNeighborsClassifier(n_neighbors=5) # 训练模型 knn.fit(X_train, y_train) print(knn.predict(X_test)) # 利用模型做预测 print(y_test) print(knn.score(X_test, y_test)) # 模型打分 scores = cross_val_score(knn, iris_X, iris_y, cv=5, scoring='accuracy') print(scores.mean()) # 使用K折交叉验证模块 # 第四步:建立测试参数集,调参,优化模型 k_range = range(1, 31) k_scores = [] #藉由迭代的方式来计算不同参数对模型的影响,并返回交叉验证后的平均准确率 for k in k_range: knn = KNeighborsClassifier(n_neighbors=k) scores = cross_val_score(knn, iris_X, iris_y, cv=10, scoring='accuracy') # 分类 # loss = -cross_val_score(knn, X, y, cv=10, scoring='mean_squared_error') # 回归 k_scores.append(scores.mean()) #可视化数据 plt.plot(k_range, k_scores) plt.xlabel('Value of K for KNN') plt.ylabel('Cross-Validated Accuracy') plt.show() # 第五步: 保存模型 # 保存Model 方法一:(注:save文件夹要预先建立,否则会报错) pickle 方法 with open('Model/Pickle/KNeighborsClassifier.pickle', 'wb') as f: pickle.dump(knn, f) #读取Model with open('Model/Pickle/KNeighborsClassifier.pickle', 'rb') as f: clf2 = pickle.load(f) print(clf2.predict(iris_X)) #测试读取后的Model #保存Model 方法二:(注:save文件夹要预先建立,否则会报错) joblib 方法 优点:效率高 joblib.dump(knn, 'Model/Joblib/KNeighborsClassifier.pkl') #读取Model clf3 = joblib.load('Model/Joblib/KNeighborsClassifier.pkl') print(clf3.predict(iris_X)) #测试读取后的Model
数据建模五大步(以KNeighborsClassifier算法为主)
最新推荐文章于 2024-07-02 18:16:19 发布
本文详细介绍了使用KNeighborsClassifier进行数据建模的五个步骤,包括加载数据、数据标准化、训练模型、参数调优和模型保存。通过K折交叉验证评估模型性能,并使用pickle和joblib模块进行模型的保存和读取。
摘要由CSDN通过智能技术生成