sklearn总结

model

1
2
3
from sklearn.ensemble import RandomForestClassifier # 随机森林
# RandomForestClassifier随机森林:n_estimators 森林中树的数量(default=100), max_features 寻找最优划分时考虑的最大数目的特征,
rf_clf_model = RandomForestClassifier(n_estimators=150, max_depth=7, random_state=42)

metric

accuracy,precision,rcall, f1_score

1
from sklearn.metrics import accuracy_score, f1_score,precision_score,recall_score

model_selection

交叉验证 cross_val_score

1
from sklearn.model_selection import cross_val_score

cross_val_score交叉验证 首个参数为estimator(也就是要执行fit的model),cv 折数,默认是5折验证,返回的cv长度的score

参考 https://blog.csdn.net/qq_36523839/article/details/80707678

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from sklearn import datasets	#自带数据集
from sklearn.model_selection import train_test_split,cross_val_score #划分数据 交叉验证
from sklearn.neighbors import KNeighborsClassifier #一个简单的模型,只有K一个参数,类似K-means
import matplotlib.pyplot as plt
iris = datasets.load_iris() #加载sklearn自带的数据集
X = iris.data #这是数据
y = iris.target #这是每个数据所对应的标签
train_X,test_X,train_y,test_y = train_test_split(X,y,test_size=1/3,random_state=3) #这里划分数据以1/3的来划分 训练集训练结果 测试集测试结果
k_range = range(1,31)
cv_scores = [] #用来放每个模型的结果值
for n in k_range:
knn = KNeighborsClassifier(n) #knn模型,这里一个超参数可以做预测,当多个超参数时需要使用另一种方法GridSearchCV
scores = cross_val_score(knn,train_X,train_y,cv=10,scoring='accuracy') #cv:选择每次测试折数 accuracy:评价指标是准确度,可以省略使用默认值,具体使用参考下面。
cv_scores.append(scores.mean())
plt.plot(k_range,cv_scores)
plt.xlabel('K')
plt.ylabel('Accuracy') #通过图像选择最好的参数
plt.show()
best_knn = KNeighborsClassifier(n_neighbors=3) # 选择最优的K=3传入模型
best_knn.fit(train_X,train_y) #训练模型
print(best_knn.score(test_X,test_y)) #看看评分