机器学习实战¶
决策树¶
基础¶
鸢尾花数据集
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
# 数据拆分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
# 创建决策树分类器实例
classifier = DecisionTreeClassifier()
# 用训练集训练模型
classifier.fit(X_train, y_train)
# 利用训练好的模型预测测试集的结果
y_pred = classifier.predict(X_test)
# 计算预测的准确率
print('Accuracy: ', accuracy_score(y_test, y_pred))
output
Accuracy: 0.9555555555555556
首先加载了鸢尾花数据集,然后数据集被划分为70%的训练集和30%的测试集。然后创建了一个决策树分类器,并用训练集数据和对应的标签进行训练。训练完模型后,我们使用该模型对测试集进行预测,并计算预测的准确率。
这是一个很基础的使用决策树模型的示例,对于实际项目,可能还需要考虑一些其他因素,比如数据预处理,特征选择,模型参数的调整等等。
乳腺癌数据集
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler
# 读取数据
data = load_breast_cancer()
X = data.data
y = data.target
# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X) # 标准化
# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
clf = DecisionTreeClassifier(random_state=42)
# 训练模型
clf.fit(X_train, y_train)
# 对测试集进行预测
y_pred = clf.predict(X_test)
# 对模型进行评估
print('Accuracy: ', accuracy_score(y_test, y_pred))
# 如果准确率不满足要求,可以调整模型的参数。比如,我们可以限制树的最大深度:
clf = DecisionTreeClassifier(max_depth=3, random_state=42)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print('Accuracy with max_depth=3: ', accuracy_score(y_test, y_pred))
output
Accuracy: 0.9473684210526315
Accuracy with max_depth=3: 0.9473684210526315