# 拆分训练集 验证集 from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3) # 网格调优(预剪枝) 通过自动调优找到最优参数值 from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import GridSearchCV parameters2={'max_depth':[15,17,20],'min_samples_leaf':[3,4,5],'min_samples_split':[7,9,10]} model2=DecisionTreeClassifier(random_state=42) grid_search=GridSearchCV(model2,parameters2,cv=5) grid_search.fit(x_train,y_train) i=grid_search.best_params_ print(i) # 4.模型训练与拟合 model = DecisionTreeClassifier(max_depth=15,min_samples_leaf=3,min_samples_split=10) model.fit(x_train, y_train) y_pred = model.predict(x_test) # 查看acc分数 from sklearn.metrics import accuracy_score score = accuracy_score(y_pred,y_test) print('Accuracy分数为:'+str(score)) from sklearn.metrics import precision_recall_fscore_support # 计算precision, recall, F1-score, support pre, rec, f1, sup = precision_recall_fscore_support(y_pred, y_test) print("precision:", pre, "\nrecall:", rec, "\nf1-score:", f1, "\nsupport:", sup) features=x.columns importances=model.feature_importances_ df=pd.DataFrame() df['特征名称']=features df['特征重要性']=importances f=df.sort_values('特征重要性',ascending=False) print(f) import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False import numpy as np sj = np.linspace(0.5, len(df['特征重要性']), len(df['特征重要性'])) plt.figure(figsize=(11, 8)) plt.bar(x=sj, height=df['特征重要性'], width=0.5, color='r') plt.xticks(rotation=340) xb = df['特征名称'] plt.xticks(sj, xb) plt.title('特征重要性柱图') plt.show() # 混淆矩阵 from sklearn import metrics metrics.plot_confusion_matrix(model, x_test, y_test) plt.show()
时间: 2024-02-16 16:02:30 浏览: 20
这段代码是关于决策树分类器的模型训练和评估的,其中包括数据集的拆分、网格搜索调优、模型训练与拟合、模型评估和特征重要性分析等步骤。具体来说:
1. 根据数据集 x 和标签 y,使用 train_test_split 函数将数据集拆分为训练集和测试集,其中测试集占比为 0.3。
2. 通过网格搜索调优,使用 GridSearchCV 函数找到最优参数值,包括最大深度、最小叶子节点数和最小分裂节点数,使用决策树分类器 DecisionTreeClassifier,并设置随机种子为 42。
3. 使用最优参数值,创建决策树分类器模型,并使用训练集进行训练和拟合。之后使用测试集进行预测,计算 Accuracy 分数和 precision、recall、f1-score、support 等指标。
4. 分析特征重要性,使用 feature_importances_ 属性获取特征重要性,将特征名称和其重要性组成一个 Pandas DataFrame,并按照特征重要性降序排序。之后使用 Matplotlib 绘制特征重要性柱图。
5. 最后,使用混淆矩阵函数 metrics.plot_confusion_matrix 绘制混淆矩阵,评估模型的分类效果。
相关问题
from sklearn.model_selection import train_seat_split
非常抱歉,我犯了一个拼写错误。正确的代码应该是`from sklearn.model_selection import train_test_split`,而不是`from sklearn.model_selection import train_seat_split`。
train_test_split函数是scikit-learn库中model_selection模块的一部分。它用于将数据集划分为训练集和测试集,以便进行模型训练和评估。通过随机地将数据拆分为训练集和测试集,我们可以在训练集上训练模型,并在测试集上评估其性能。
要导入train_test_split函数,可以使用以下代码:
```python
from sklearn.model_selection import train_test_split
```
希望这个回答对你有帮助!如果你还有其他问题,请随时提问。
from sklearn.model_selection import train_test_split 是什么意思
这是一个 Python 库 scikit-learn 中的函数,用于将数据集随机拆分为训练集和测试集。其语法为:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
其中,X 是特征数据,y 是标签数据,test_size 是测试集的比例(默认为 0.25),random_state 是随机数种子,用于确保每次随机拆分数据集的结果都相同。函数的返回值是拆分后的四个数据集:训练集特征数据、测试集特征数据、训练集标签数据、测试集标签数据。拆分后的数据集可以用于训练和评估机器学习模型。