python代码采用决策树算法对鸢尾花数据进行分类并比较采用信息增益与gini系数时的精度
时间: 2024-12-17 15:35:47 浏览: 9
python利用c4.5决策树对鸢尾花卉数据集进行分类(iris)(代码全)
5星 · 资源好评率100%
Python中可以使用scikit-learn库中的`DecisionTreeClassifier`来实现决策树算法对鸢尾花(Iris dataset)数据集的分类。鸢尾花数据集是一个经典的机器学习入门示例,包含了三种鸢尾花类型的测量特征。
首先,你需要导入必要的库:
```python
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
import pandas as pd
```
然后,加载数据集,并划分训练集和测试集:
```python
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)
```
接下来,创建两个模型,一个使用信息增益(entropy),另一个使用Gini不纯度:
```python
# 使用信息增益作为分裂标准
tree_entropy = DecisionTreeClassifier(criterion='entropy')
# 使用Gini系数作为分裂标准
tree_gini = DecisionTreeClassifier(criterion='gini')
```
训练这两个模型:
```python
tree_entropy.fit(X_train, y_train)
tree_gini.fit(X_train, y_train)
```
最后,分别在测试集上预测并计算准确率:
```python
entropy_predictions = tree_entropy.predict(X_test)
gini_predictions = tree_gini.predict(X_test)
# 计算每个模型的准确率
accuracy_entropy = accuracy_score(y_test, entropy_predictions)
accuracy_gini = accuracy_score(y_test, gini_predictions)
print(f"Using Entropy criterion:")
print("Accuracy:", accuracy_entropy)
print("\nUsing Gini criterion:")
print("Accuracy:", accuracy_gini)
```
在这个过程中,你可以比较`accuracy_entropy`和`accuracy_gini`值,看哪种准则下的决策树在鸢尾花数据集上的分类精度更高。通常,信息增益倾向于选择更纯的分割,而Gini系数则更为保守一些。
阅读全文