python学习经典算法,python初学者必备十大算法

首页 > 经验 > 作者:YD1662022-11-03 06:41:03

python学习经典算法,python初学者必备十大算法(1)

一般应用分类分析用于提炼应用规则分类用于提取特征分类用于处理缺失值分类分析算法的选取数据准备

本次分类分析使用股市数据。此处可参考金融数据准备。

python学习经典算法,python初学者必备十大算法(2)

KNN

K-Nearest Neighbors (KNN) 是一种懒惰学习算法和分类算法。此外,KNN是机器学习中最简单的方法。利用KNN进行分类,预测新点的分类。

数据预处理

从数据集dataset中选取需要用的数据作为输入数据和标签。

X = dataset.loc[ : , ['high','low','close']].values y = dataset.loc[ : , ['Up_Down']].values from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20) 数据标准化

数据标准化对于距离类模型,数据归一化是非常有必要的。这里使用sklearn.preprocessing中StandardScaler。

from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(X_train) X_train = scaler.transform(X_train) X_test = scaler.transform(X_test) 模型训练与预测

from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=5) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) 模型评价

from sklearn.metrics import classification_report, confusion_matrix print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))

[[39 31] [32 44]] precision recall f1-score support -1 0.55 0.56 0.55 70 1 0.59 0.58 0.58 76 accuracy 0.57 146 macro avg 0.57 0.57 0.57 146 weighted avg 0.57 0.57 0.57 146 绘制学习曲线

分类以KNeighbors个数为x轴,模型得分为y轴,绘制学习曲线,以模型得分最高的n_neighbors为本次模型最终参数。

from sklearn.metrics import accuracy_score score = [] for K in range(40): K_value = K 1 knn = KNeighborsClassifier(n_neighbors = K_value, weights='uniform', algorithm='auto') knn.fit(X_train, y_train) y_pred = knn.predict(X_test) score.append(round(accuracy_score(y_test,y_pred)*100,2)) plt.figure(figsize=(12, 6)) plt.plot(range(1, 41), score, color='red', linestyle='dashed', marker='o', markerfacecolor='blue', markersize=10) plt.title('The Learning curve') plt.xlabel('K Value') plt.ylabel('Score')

python学习经典算法,python初学者必备十大算法(3)

带误差线的学习曲线

from sklearn import metrics Ks = 10 mean_acc = np.zeros((Ks-1)) std_acc = np.zeros((Ks-1)) ConfustionMx = []; for n in range(1,Ks): # 模型训练和预测 neigh = KNeighborsClassifier(n_neighbors = n).fit(X_train,y_train) yhat=neigh.predict(X_test) mean_acc[n-1] = metrics.accuracy_score(y_test, yhat) std_acc[n-1]=np.std(yhat==y_test)/np.sqrt(yhat.shape[0]) # 绘图 plt.figure(figsize=(12,6)) plt.plot(range(1,Ks),mean_acc,'g') plt.fill_between(range(1,Ks),mean_acc - 1 * std_acc,mean_acc 1 * std_acc, alpha=0.10) plt.legend(('Accuracy ', ' /- 3xstd')) plt.ylabel('Accuracy ') plt.xlabel('Number of Nabors (K)') plt.tight_layout() plt.show() # print( "The best accuracy was with", mean_acc.max(), "with k=", mean_acc.argmax() 1)

python学习经典算法,python初学者必备十大算法(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.