鸢尾花分类与降维

这段时间,自己学习了一些有关机器学习的算法,现在拿鸢尾花分类来对这四种进行巩固与回顾。
这些算法都是直接使用的skearn库的算法,并未自己编写。

鸢尾花的降维
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
 
data = load_iris()
y = data.target
X = data.data
pca = PCA(n_components=2)
reduced_X = pca.fit_transform(X)
 
red_x, red_y = [], []
blue_x, blue_y = [], []
green_x, green_y = [], []
 
for i in range(len(reduced_X)):
    if y[i] == 0:
        red_x.append(reduced_X[i][0])
        red_y.append(reduced_X[i][1])
    elif y[i] == 1:
        blue_x.append(reduced_X[i][0])
        blue_y.append(reduced_X[i][1])
    else:
        green_x.append(reduced_X[i][0])
        green_y.append(reduced_X[i][1])
 
plt.scatter(red_x, red_y, c='r', marker='x') 
plt.scatter(blue_x, blue_y, c='b', marker='D')
plt.scatter(green_x, green_y, c='g', marker='.')
plt.show()

经过降维后,将其进行数据可视化,可以明显的看出他的类别。
在这里插入图片描述

图1

在开始前,先将所需要的包导入进来,代码如下:

from sklearn import datasets    # 数据集的库
from sklearn import model_selection    
from sklearn import svm
from sklearn.naive_bayes import GaussianNB
from sklearn.cluster import KMeans
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt 
1.鸢尾花svm分类
iris = datasets.load_iris()     #从datasets导入鸢尾花数据集
X = iris.data
y = iris.target 
# 将原始数据集划分成训练集和测试集
x=X[:,0:2] #在 X中取前两列作为特征(为了后期的可视化画图更加直观,故只取前两列特征值向量进行训练)
x_train,x_test,y_train,y_test=model_selection.train_test_split(X,y,random_state=1,test_size=0.3)
# 搭建模型,训练SVM分类器
classifier=svm.SVC(kernel='rbf',gamma=0.1,decision_function_shape='ovo',C=0.8)
#开始训练
classifier.fit(x_train,y_train.ravel())
# 计算svm分类器的准确率
print('SVM-输出训练集的准确率为: %.2f' % classifier.score(x_train, y_train))
print('SVM-输出测试集的准确率为 %.2f' % classifier.score(x_test, y_test))

可以得到训练集与测试集的训练准确率。

2.鸢尾花线性回归
iris = datasets.load_iris() 
#获取花瓣的长和宽
x = [n[0] for n in iris.data]
y = [n[1] for n in iris.data]
import numpy as np #转换成数组
x = np.array(x).reshape(len(x),1)
y = np.array(y).reshape(len(y),1)
#第二步 导入Sklearn机器学习扩展包中线性回归模型,然后进行训练和预测  
classifier = LinearRegression()
# 开始训练
classifier.fit(x,y)
# 预测
pre = classifier.predict(x)

#第三步 画图
plt.scatter(x,y,s=100)
plt.plot(x,pre,"r-",linewidth=4)
#花萼的长宽
plt.xlabel('calycinal length')  
plt.ylabel('calycinall width')  
for idx, m in enumerate(x):
    plt.plot([m,m],[y[idx],pre[idx]], 'g-')
plt.show()
# 做预测,花萼长度为5.0,预测花萼宽度是多少
print ('[线性回归]花萼长度为5.0,预测花萼宽度是',classifier.predict([[5.0]]))

得到的结果如下图:
在这里插入图片描述

图2

3.鸢尾花k-means聚类
#1.获取数据集
iris = datasets.load_iris() 
# 2.取特征空间中的4个维度
X = iris.data[:, :4]  
# 3.搭建模型,构造KMeans聚类器
estimator = KMeans(n_clusters=3)
#开始聚类训练   
estimator.fit(X)
# 获取聚类标签
label_pred = estimator.labels_ 
# 绘制数据分布图
plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see')  
plt.xlabel('petal length')  
plt.ylabel('petal width')  
plt.legend(loc=2)  
plt.show()  
# 绘制k-means结果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0')  
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1')  
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2')  
#花瓣的长宽
plt.xlabel('petal length')  
plt.ylabel('petal width')  
plt.legend(loc=2)  
plt.show()  

在这里插入图片描述

图3

4.鸢尾花朴素贝叶斯
X = iris.data
y = iris.target 
# 2.将原始数据集划分成训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y,test_size=0.3, random_state=1) 
# 3.搭建模型,训练高斯贝叶斯分类器
classifier = GaussianNB()
#开始训练
classifier.fit(X_train, y_train)
# 4.计算svm分类器的准确率
print('高斯贝叶斯输出训练集的准确率为: %.2f' % classifier.score(X_train, y_train))
print('高斯贝叶斯输出测试集的准确率为: %.2f' % classifier.score(X_test, y_test))
鸢尾花数据集是一个常用的分类实验数据集,也称为Iris数据集。它包含了150个数据样本,分为3类,每类50个数据。每个数据样本有4个属性,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。通过这4个特征,我们可以预测鸢尾花属于三个种类中的哪一类(Setosa、Versicolour、Virginica)\[2\]。 如果我们想要对鸢尾花数据集进行降维,可以使用主成分分析(PCA)方法。PCA是一种常用的降维技术,可以将高维数据映射到低维空间。在这个过程中,我们首先加载高维数据集(维度为4),然后确定降维后的空间维度(通常选择2维)。接着,我们可以使用PCA算法对数据进行降维\[3\]。 所以,鸢尾花数据集的PCA降维过程可以通过以下步骤实现: 1. 加载鸢尾花数据集。 2. 确定降维后的空间维度,比如选择2维。 3. 使用PCA算法对数据进行降维。 这样,我们就可以得到降维后的鸢尾花数据集,其中每个样本只有两个特征。这样的降维可以帮助我们更好地理解和可视化数据集中的模式和结构。 #### 引用[.reference_title] - *1* [【使用 PCA 实现对鸢尾花四维数据(Iris)进行降维处理】](https://blog.csdn.net/m0_51534537/article/details/123548248)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PCA线性降维——应用于IRIS鸢尾花数据集](https://blog.csdn.net/weixin_41819299/article/details/80938005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于PCA的数据降维(鸢尾花(iris)数据集)](https://blog.csdn.net/weixin_51756038/article/details/130058265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向暖阳呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值