|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import numpy as np
- import pandas as pd
- import seaborn as sn
- import matplotlib.pyplot as plt
- from sklearn.ensemble import RandomForestRegressor
- from sklearn.model_selection import train_test_split
- from sklearn.metrics import confusion_matrix
- from sklearn.model_selection import GridSearchCV
- from sklearn.model_selection import cross_val_score # 交叉验证模块
- from sklearn.metrics import classification_report
- from sklearn.metrics import precision_score, recall_score, f1_score
复制代码
- data = np.genfromtxt("f:\\seeds_dataset.csv", delimiter=",") #读取数据
- #拆分数据成x和y两部分
- x_data = np.array(data[0:,1:-1])
- y_data = np.array(data[0:,-1, np.newaxis])
- #拆分成训练集和验证集
- X_train, X_test, Y_train, Y_test = train_test_split(x_data, y_data, train_size=0.8, random_state=1)
复制代码
- model = RandomForestRegressor(max_features=0.6) # 随机抽取的特征子集中所使用的特征数目为4
- param_grid = {"n_estimators":[10, 50]} # 随机森林中基本模型的数目为10、50
- grid_search = GridSearchCV(model, param_grid, cv=5) # 5折交叉验证
- grid_search.fit(X_train, Y_train)
- print(grid_search.best_score_) #正确率
- print(grid_search.best_params_) #最佳 参数组合
- # criterion参数为信息熵,最大深度为6
-
- y_pred=grid_search.predict(X_test)
- y_pred = y_pred[:,np.newaxis]
- print(y_pred.shape)
- #print(classification_report(Y_test,y_pred))
- p = precision_score(Y_test, y_pred, average=None) # 查准率
- r = recall_score(Y_test, y_pred, average=None) # 查全率
- f1score = f1_score(Y_test, y_pred, average=None) # f1分值
- # 宏查准率、宏查全率、宏f1分值
- print("macro_precision: %.3f" % (sum(p) / 3.0))
- print("macro_recall:%.3f" % (sum(r) / 3.0))
- print("macro_f1socre:%.3f" % (sum(f1score) / 3.0))
- #绘制混淆矩阵,
- sn.heatmap(confusion_matrix(Y_test, y_pred), cmap='rainbow', annot=True)
复制代码
在求查准率、查全率和f1分值的时候报错,提示Classification metrics can't handle a mix of multiclass and continuous targets,需要怎么修改才能正常运行呢?
|
评分
-
查看全部评分
|