from sklearn.tree import DecisionTreeClassifier from sklearn import tree best_dt =DecisionTreeClassifier(max_depth=2,criterion='entropy',min_samples_split= 2) best_dt.fit(X_train, y_train) print (best_dt.score(X_train, y_train)) print (best_dt.score(X_test, y_test))from sklearn.metrics import classification_report, confusion_matrix y_pred =best_dt.predict(X_test) print(classification_report(y_test,y_pred))cm = confusion_matrix(y_test, y_pred) plt.figure(figsize = (8,8)) sns.heatmap(cm,cmap= "Blues", linecolor = 'black' , linewidth = 1 , annot = True, fmt='' , xticklabels = ['A','B','C','D'] , yticklabels = ['A','B','C','D']) plt.xlabel("Predicted") plt.ylabel("Actual") plt.show()tree_model = DecisionTreeClassifier() prams ={ 'max_depth' : [3 ,5, 7,8, 11, 12],'min_samples_split' : [2, 3, 5, 9] , 'criterion' : ['gini', 'entropy'] } gd_cv2= GridSearchCV(tree_model , param_grid=prams, n_jobs=-1 ,cv=10)gd_cv2.fit(X_train , y_train) tunn_tree =gd_cv2.best_estimator_ print(f'Train : {tunn_tree.score(X_train, y_train)}') model_eval(tunn_tree,X_test,y_test)plt.figure(figsize=(15,10)) names = ['A', 'D', 'B', 'C'] tree.plot_tree(best_dt,feature_names = X_train.columns,class_names=names,filled = True); plt.show()
时间: 2024-01-21 18:03:48 浏览: 111
这段代码使用了scikit-learn库中的DecisionTreeClassifier类来创建一个决策树分类器,并使用max_depth、criterion、min_samples_split等参数对其进行了配置。其中,max_depth设置了决策树的最大深度,criterion指定使用的划分标准为信息熵,min_samples_split指定了节点分裂的最小样本数为2。
之后,使用fit方法对训练数据进行拟合,并使用score方法计算了模型在训练集和测试集上的准确率,并将其打印输出。接下来,使用classification_report和confusion_matrix方法计算并打印了模型的分类报告和混淆矩阵。
随后,使用GridSearchCV方法对决策树分类器进行调参,尝试不同的max_depth、min_samples_split和criterion参数组合,以求得最优的模型。最后,使用tunn_tree.score方法计算了调参后模型在训练集上的准确率,并使用model_eval方法计算并打印了模型在测试集上的性能表现。
最后,使用plot_tree方法可视化了决策树模型的决策过程。
相关问题
from sklearn.tree import DecisionTreeClassifier from sklearn import tree best_dt =DecisionTreeClassifier(max_depth=2,criterion='entropy',min_samples_split= 2) best_dt.fit(X_train, y_train) print (best_dt.score(X_train, y_train)) print (best_dt.score(X_test, y_test))
这段代码使用了scikit-learn库中的DecisionTreeClassifier类来创建一个决策树分类器,并使用max_depth、criterion、min_samples_split等参数对其进行了配置。其中,max_depth设置了决策树的最大深度,criterion指定使用的划分标准为信息熵,min_samples_split指定了节点分裂的最小样本数为2。
之后,使用fit方法对训练数据进行拟合,并使用score方法计算了模型在训练集和测试集上的准确率,并将其打印输出。这段代码的目的是训练一个决策树分类器,并评估其在训练集和测试集上的性能表现。
请给出完整的代码:参照“Understanding the decision tree structure”,对load_wine数据集进行分类(调参),并使用random forest对load_wine数据集进行分类(调参)。
首先,我们需要导入所需的库,如`sklearn`, `pandas`, 和 `numpy`,然后加载`load_wine`数据集。这个数据集通常位于`sklearn.datasets`模块中。接下来,我们将使用决策树和随机森林进行分类,并对它们的超参数进行调整。
```python
# 导入所需库
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import pandas as pd
import numpy as np
# 加载数据集
wine = load_wine()
X = wine.data
y = wine.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 定义决策树模型和参数网格
dt_params = {
'criterion': ['gini', 'entropy'],
'max_depth': range(1, 11),
'min_samples_split': [2, 5, 10],
}
# 决策树分类器
dt_clf = DecisionTreeClassifier()
# 使用GridSearchCV进行参数搜索
dt_grid_search = GridSearchCV(dt_clf, dt_params, cv=5, scoring='accuracy')
dt_grid_search.fit(X_train, y_train)
# 打印最佳参数及其准确率
best_dt_params = dt_grid_search.best_params_
print(f"Best Decision Tree parameters: {best_dt_params}")
dt_best_model = dt_grid_search.best_estimator_
dt_accuracy = accuracy_score(y_test, dt_best_model.predict(X_test))
print(f"Decision Tree Accuracy: {dt_accuracy}")
# 定义随机森林模型和参数网格
rf_params = {
'n_estimators': [50, 100, 200],
'max_depth': range(1, 11),
'min_samples_split': [2, 5, 10],
'max_features': ['auto', 'sqrt', 'log2']
}
# 随机森林分类器
rf_clf = RandomForestClassifier()
# 进行参数搜索
rf_grid_search = GridSearchCV(rf_clf, rf_params, cv=5, scoring='accuracy')
rf_grid_search.fit(X_train, y_train)
# 打印最佳参数及其准确率
best_rf_params = rf_grid_search.best_params_
print(f"Best Random Forest parameters: {best_rf_params}")
rf_best_model = rf_grid_search.best_estimator_
rf_accuracy = accuracy_score(y_test, rf_best_model.predict(X_test))
print(f"Random Forest Accuracy: {rf_accuracy}")
阅读全文