鸢尾花数据集未剪枝的python代码
时间: 2023-10-18 20:21:46 浏览: 74
以下是鸢尾花数据集未剪枝的Python代码:
```python
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
# 加载数据集
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=42)
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 训练模型
clf.fit(X_train, y_train)
# 预测测试集
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = clf.score(X_test, y_test)
print("Accuracy:", accuracy)
```
在此代码中,我们使用load_iris函数加载鸢尾花数据集,并将其划分为训练集和测试集。然后,我们创建一个DecisionTreeClassifier对象,并使用fit函数训练模型。最后,我们使用predict函数预测测试集,并使用score函数计算模型的准确率。
相关问题
鸢尾花数据集预剪枝的python代码
鸢尾花数据集是一个经典的分类问题数据集,可以使用预剪枝来优化决策树模型。下面是使用sklearn库中的决策树模型进行预剪枝的python代码示例:
```python
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
# 加载数据集
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.2, random_state=42)
# 定义决策树模型,设置预剪枝参数
clf = DecisionTreeClassifier(max_depth=3, min_samples_leaf=5)
# 拟合模型
clf.fit(X_train, y_train)
# 预测测试集
y_pred = clf.predict(X_test)
# 输出模型准确率
print("Accuracy:", clf.score(X_test, y_test))
```
在上述代码中,我们使用`DecisionTreeClassifier`类定义决策树模型,并通过设置`max_depth`和`min_samples_leaf`两个参数进行预剪枝。`max_depth`表示决策树的最大深度,`min_samples_leaf`表示每个叶子节点至少包含的样本数。这两个参数都是用来控制决策树的复杂度,防止过拟合。
在拟合模型后,我们可以使用`score`方法输出模型的准确率。
鸢尾花数据集后剪枝的python代码
以下是使用scikit-learn库中的决策树分类器进行后剪枝的鸢尾花数据集的python代码:
```python
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
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.2, random_state=42)
# 训练决策树分类器
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)
# 后剪枝
path = clf.cost_complexity_pruning_path(X_train, y_train)
ccp_alphas, impurities = path.ccp_alphas, path.impurities
clfs = []
for ccp_alpha in ccp_alphas:
clf = DecisionTreeClassifier(random_state=42, ccp_alpha=ccp_alpha)
clf.fit(X_train, y_train)
clfs.append(clf)
# 计算在测试集上的准确率
test_scores = [accuracy_score(y_test, clf.predict(X_test)) for clf in clfs]
best_clf = clfs[test_scores.index(max(test_scores))]
print("Test accuracy of the best pruned tree: {:.2f}%".format(max(test_scores) * 100))
```
在上面的代码中,首先加载鸢尾花数据集,并将其划分为训练集和测试集。然后使用决策树分类器进行训练,并使用`cost_complexity_pruning_path`方法计算出一系列ccp_alpha值。接着,对于每个ccp_alpha值,都训练一个新的决策树分类器,最后找出在测试集上表现最好的决策树分类器,并输出其准确率。
阅读全文