Iris也称鸢尾花卉数据集(使用sklearn自带的数据集),它共有4个属性列和一个品种类别列:sepal length(萼片长度)、sepal width(萼片宽度)、petal length(花瓣长度)、petal width (花瓣宽度),单位都是厘米。3个品种类别(Setosa(山鸢尾),Versicolour(杂色鸢尾),Virginica(维吉尼亚鸢尾)),样本数量150个,每类50个。分别朴素贝叶斯算法、决策树算法、随机森林算法、KNN算法和支持向量机对大量的鸢尾花数据进行分类训练,并比较这几种算法的评估性能,最后识别新的鸢尾花是什么类型。(要求训练集70%,测试集30%)并输出结果
时间: 2024-02-13 12:00:43 浏览: 71
好的,针对您的问题,我来为您解答。
首先,我们需要导入所需要的库和数据集。代码如下:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
iris = load_iris()
X = iris.data
y = iris.target
```
接着,我们将数据集划分为训练集和测试集,代码如下:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
然后,我们分别使用朴素贝叶斯算法、决策树算法、随机森林算法、KNN算法和支持向量机对训练集进行训练,并在测试集上进行预测和评估。代码如下:
```python
# 朴素贝叶斯算法
gnb = GaussianNB()
gnb.fit(X_train, y_train)
y_pred_gnb = gnb.predict(X_test)
acc_gnb = accuracy_score(y_test, y_pred_gnb)
# 决策树算法
dtc = DecisionTreeClassifier()
dtc.fit(X_train, y_train)
y_pred_dtc = dtc.predict(X_test)
acc_dtc = accuracy_score(y_test, y_pred_dtc)
# 随机森林算法
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
y_pred_rfc = rfc.predict(X_test)
acc_rfc = accuracy_score(y_test, y_pred_rfc)
# KNN算法
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
y_pred_knn = knn.predict(X_test)
acc_knn = accuracy_score(y_test, y_pred_knn)
# 支持向量机
svm = SVC()
svm.fit(X_train, y_train)
y_pred_svm = svm.predict(X_test)
acc_svm = accuracy_score(y_test, y_pred_svm)
```
最后,我们输出各个算法在测试集上的准确率,并使用最优算法对新的鸢尾花进行分类。代码如下:
```python
print("朴素贝叶斯算法的准确率为:", acc_gnb)
print("决策树算法的准确率为:", acc_dtc)
print("随机森林算法的准确率为:", acc_rfc)
print("KNN算法的准确率为:", acc_knn)
print("支持向量机的准确率为:", acc_svm)
new_flower = [[5.1, 3.5, 1.4, 0.2]] # 假设新的鸢尾花的特征值为[5.1, 3.5, 1.4, 0.2]
new_flower_type = rfc.predict(new_flower)
print("新的鸢尾花的类型为:", iris.target_names[new_flower_type[0]])
```
运行上述代码,即可得到各个算法在测试集上的准确率和新的鸢尾花的类型。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![csv](https://img-home.csdnimg.cn/images/20241231044821.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)