2024-08-16



from sklearn.datasets import load_iris
from sklearn import tree
import graphviz
 
# 加载鸢尾花数据集
iris = load_iris()
 
# 创建决策树模型
model = tree.DecisionTreeClassifier()
 
# 训练模型
model.fit(iris.data, iris.target)
 
# 使用Graphviz将决策树可视化
dot_data = tree.export_graphviz(
    model,
    out_file=None,
    feature_names=iris.feature_names,
    class_names=iris.target_names,
    filled=True,
    rounded=True,
    special_characters=True
)
graph = graphviz.Source(dot_data)
graph.render("iris_decision_tree")

这段代码使用了sklearn库中的tree模块来训练一个决策树模型,并使用graphviz库将决策树可视化。首先加载了鸢尾花数据集,然后训练模型,最后将决策树以图形方式输出到文件。这个过程展示了如何在实践中应用机器学习算法,并且如何将其可视化以辅助理解。

2024-08-14



import numpy as np
import shap
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
 
# 加载波士顿房价数据集
data = load_boston()
X, y = data.data, data.target
 
# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1337)
 
# 初始化决策树模型
model = DecisionTreeRegressor(random_state=1337)
 
# 训练模型
model.fit(X_train, y_train)
 
# 使用SHAP值进行特征重要性评估
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
 
# 计算特征的平均SHAP值来评估重要性
mean_shap_values = np.abs(shap_values).mean(0)
 
# 根据平均SHAP值进行特征排序
sorted_indices = np.argsort(mean_shap_values)[::-1]
 
# 打印排名前5的特征的SHAP值和特征名称
for i in range(5):
    shap_value = mean_shap_values[sorted_indices[i]]
    feature_name = data.feature_names[sorted_indices[i]]
    print(f"特征{feature_name}: SHAP值 = {shap_value:.2f}")

这段代码使用SHAP库来评估波士顿房价数据集中特征的重要性。首先加载数据集,划分为训练集和测试集,然后初始化一个决策树模型并训练。接着使用shap.TreeExplainer来计算SHAP值,并通过计算平均SHAP值来评估特征的重要性,最后打印出排名前5的特征的名称和SHAP值。

2024-08-12

Brushfire是一个用于集成多个决策树模型的Python库。它提供了一种方法来训练和评估这些模型,并通过集成方法如Stacking、Bagging、Boosting和随机森林等方式将它们组合起来。

以下是一个简单的使用Brushfire来训练和评估一个随机森林集成模型的例子:




import brushfire as bf
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
 
# 加载波士顿房价数据集
data = load_boston()
X, y = data.data, data.target
 
# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
 
# 特征缩放
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
 
# 创建随机森林集成模型
rf = bf.RandomForest(n_estimators=100, max_depth=5, min_samples_split=2, min_samples_leaf=1)
 
# 训练模型
rf.fit(X_train_scaled, y_train)
 
# 进行预测
y_pred = rf.predict(X_test_scaled)
 
# 评估模型
print(rf.score(X_test_scaled, y_test))

这段代码首先加载了波士顿房价数据集,并将其划分为训练集和测试集。然后,使用MinMaxScaler对特征进行了缩放。接着,创建了一个随机森林模型,并用训练集数据对其进行训练。最后,使用测试集数据对模型进行评估,并打印出模型的准确度。这个例子展示了如何使用Brushfire库来训练和评估一个基本的集成模型。

2024-08-08



from sklearn.datasets import load_iris
from sklearn import tree
import pydotplus
 
# 加载鸢尾花数据集
iris = load_iris()
 
# 创建决策树模型
model = tree.DecisionTreeClassifier()
 
# 训练模型
model.fit(iris.data, iris.target)
 
# 使用 pydotplus 将决策树可视化
dot_data = tree.export_graphviz(
    model,
    out_file=None,
    feature_names=iris.feature_names,
    class_names=iris.target_names,
    filled=True,
    rounded=True
)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("iris_decision_tree.pdf")
 
# 打印出决策树的详细信息
print(model)

这段代码使用了sklearn库中的tree模块来训练一个决策树模型,并使用pydotplus库将决策树可视化为PDF格式的图片。代码加载了鸢尾花数据集,训练了一个基于该数据集的决策树分类器,并将决策树导出为PDF格式的图片。最后,打印出了决策树的详细信息,包括其结构和训练参数。