完整代码:
# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data # 特征数据
y = iris.target # 标签数据
# 将数据集分为训练集和测试集(70% 训练集,30% 测试集)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建并训练随机森林模型
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = rf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy * 100:.2f}%")
# 测试一个新的数据点
new_data = np.array([[5.1, 3.5, 1.4, 0.2]]) # 新数据点
prediction = rf.predict(new_data)
print(f"新数据点预测类别: {prediction[0]}")
- 数据加载:
- 使用
load_iris()
加载鸢尾花数据集。X
包含特征数据(四个属性:花萼长度、花萼宽度、花瓣长度、花瓣宽度),y
是类别标签(0、1、2,分别代表 Setosa、Versicolor、Virginica)。
- 使用
- 数据分割:
- 使用
train_test_split()
将数据分为训练集和测试集,训练集占 70%,测试集占 30%。
- 使用
- 训练模型:
- 使用
RandomForestClassifier
创建随机森林模型,并用训练集数据X_train
和y_train
进行训练。
- 使用
- 预测与评估:
- 使用训练好的模型预测测试集
X_test
的标签,并计算准确率。
- 使用训练好的模型预测测试集
- 新数据点预测:
- 使用
rf.predict()
对新数据点进行预测。这里输入的是一个假设的花萼和花瓣的特征数据[5.1, 3.5, 1.4, 0.2]
。
- 使用
运行输出:
模型准确率: 100.00%
新数据点预测类别: 0
复制编辑
模型准确率: 97.78% 新数据点预测类别: 0
- 模型准确率:表示模型在测试集上的表现。在这个例子中,准确率为 97.78%。
- 新数据点预测:对于输入的数据
[5.1, 3.5, 1.4, 0.2]
,模型预测其类别为0
,即 Setosa。
这样,您就可以根据提供的鸢尾花数据集训练一个随机森林模型,并对新的数据点进行预测。