用人工智能十大算法分析鸾尾花数据集

一、决策树:决策树是一种基于树状结构的分类模型,通过对数据进行分析,以树状图的形式来表示决策过程。

代码:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
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(criterion='gini')

# 在训练集上拟合模型
clf.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = clf.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 可视化决策树
plt.figure(figsize=(15, 10))
plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()

# 创建画布和子图
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))

# 绘制真实值折线图
ax1.plot(np.arange(len(y_test)), y_test, color='blue')
ax1.set_title('Actual Classes')
ax1.set_xlabel('Sample Index')
ax1.set_ylabel('Class')

# 绘制预测值折线图
ax2.plot(np.arange(len(y_test)), y_pred, color='red')
ax2.set_title('Predicted Classes')
ax2.set_xlabel('Sample Index')
ax2.set_ylabel('Class')

# 调整子图之间的间距
plt.tight_layout()

# 显示图表
plt.show()

 

 

二、随机森林:随机森林是一种集成学习方法,由多个决策树组成,通过投票或者平均值来提高模型的准确性和鲁棒性。

代码:

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 matplotlib.pyplot as plt
import numpy as np

# 加载数据集
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)

# 创建随机森林分类器
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("准确率:", accuracy)

# 可视化预测结果
plt.figure(figsize=(10, 6))
plt.plot(np.arange(len(y_test)), y_test, label='Actual')
plt.plot(np.arange(len(y_test)), y_pred, label='Predicted')
plt.title('Actual vs Predicted')
plt.xlabel('Sample Index')
plt.ylabel('Class')
plt.legend()
plt.show()

 

 

三、神经网络:神经网络是一种模仿人脑神经元网络结构的模型,用于模式识别和机器学习任务,具有强大的拟合能力。

代码:

from sklearn.datasets import load_iris
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

# 加载数据集
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)

# 创建多层感知机(MLP)分类器
mlp = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=500)

# 在训练集上拟合模型
mlp.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = mlp.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 绘制预测结果
plt.figure(figsize=(10, 6))
plt.scatter(range(len(y_test)), y_test, color='b', label='Actual')
plt.scatter(range(len(y_test)), y_pred, color='r', marker='x', label='Predicted')
plt.title('Actual vs Predicted')
plt.xlabel('Sample')
plt.ylabel('Target')
plt.legend()
plt.show()

 

 

四、线性回归:线性回归是一种用于建立自变量和因变量之间线性关系的统计模型,常用于预测数值型变量。

代码:

from sklearn.datasets import load_iris
import numpy as np
import matplotlib.pyplot as plt

# 加载数据集
iris = load_iris()
X = iris.data[:, 0].reshape(-1, 1)
y = iris.target

# 添加偏置项
X_b = np.c_[np.ones((len(X), 1)), X]

# 划分数据集为训练集和测试集
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X_b, y, test_size=0.2, random_state=42)


# 定义梯度下降函数
def gradient_descent(X, y, learning_rate=0.01, n_iterations=1000):
    theta = np.random.randn(X.shape[1])  # 初始化参数
    m = len(X)

    for iteration in range(n_iterations):
        gradients = 2 / m * X.T.dot(X.dot(theta) - y)
        theta = theta - learning_rate * gradients

    return theta


# 使用梯度下降训练模型
theta = gradient_descent(X_train, y_train)

# 在测试集上进行预测
y_pred = X_test.dot(theta)

# 计算均方误差和决定系数
from sklearn.metrics import mean_squared_error, r2_score

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("均方误差:", mse)
print("决定系数:", r2)

# 绘制预测折线图
plt.figure(figsize=(10, 6))
plt.scatter(X_test[:, 1], y_test, color='b', label='Actual')
plt.plot(X_test[:, 1], y_pred, color='r', label='Predicted')
plt.title('Actual vs Predicted')
plt.xlabel('Feature')
plt.ylabel('Target')
plt.legend()
plt.show()

 

 

五、逻辑回归:逻辑回归是一种用于建立因变量与自变量之间的关系,并进行分类的统计技术,通常用于二分类问题。

代码:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

# 加载数据集
iris = load_iris()
X = iris.data[:, 0].reshape(-1, 1)
y = (iris.target == 0).astype(int)  # 将目标变量转换为二元分类问题

# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建逻辑回归模型
log_reg = LogisticRegression()

# 在训练集上拟合模型
log_reg.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = log_reg.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 绘制预测结果
plt.figure(figsize=(10, 6))
plt.scatter(X_test, y_test, color='b', label='Actual')
plt.scatter(X_test, y_pred, color='r', marker='x', label='Predicted')
plt.title('Actual vs Predicted')
plt.xlabel('Feature')
plt.ylabel('Target')
plt.legend()
plt.show()

六、降维:降维是一种通过减少数据维度来简化数据表示的技术,旨在保留数据的主要特征。

代码:

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

# 加载数据集
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)

# 使用PCA进行降维
pca = PCA(n_components=2)  # 降维到2维
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

# 创建逻辑回归模型
log_reg = LogisticRegression()

# 在降维后的训练集上拟合模型
log_reg.fit(X_train_pca, y_train)

# 在降维后的测试集上进行预测
y_pred = log_reg.predict(X_test_pca)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 绘制降维结果
plt.figure(figsize=(10, 6))
plt.scatter(X_test_pca[:, 0], X_test_pca[:, 1], c=y_test, cmap=plt.cm.Set1)
plt.title('PCA of Iris Dataset')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()

 

 

七、支持向量机:支持向量机是一种用于分类和回归分析的监督学习模型,通过在高维空间中寻找最优超平面来进行分类。

代码:

from sklearn.datasets import load_iris
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
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 = SVC(kernel='rbf')  # 选择径向基函数(RBF)作为核函数

# 在训练集上拟合模型
clf.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = clf.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 创建画布和子图
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))

# 绘制真实值折线图
ax1.plot(np.arange(len(y_test)), y_test, color='blue')
ax1.set_title('Actual Classes')
ax1.set_xlabel('Sample Index')
ax1.set_ylabel('Class')

# 绘制预测值折线图
ax2.plot(np.arange(len(y_test)), y_pred, color='red')
ax2.set_title('Predicted Classes')
ax2.set_xlabel('Sample Index')
ax2.set_ylabel('Class')

# 调整子图之间的间距
plt.tight_layout()

# 显示图表
plt.show()

 

 

八、朴素贝叶斯:朴素贝叶斯是一种基于贝叶斯定理和特征之间条件独立假设的分类算法,常用于文本分类和垃圾邮件过滤等问题。

代码:

from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import numpy as np

# 加载数据集
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 = GaussianNB()

# 在训练集上拟合模型
clf.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = clf.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 创建画布和子图
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制散点图
ax.scatter(np.arange(len(y_test)), y_test, color='blue', label='Actual Classes')
ax.scatter(np.arange(len(y_test)), y_pred, color='red', label='Predicted Classes')
ax.plot(np.arange(len(y_test)), y_test, color='blue', linestyle='-', marker='o')
ax.plot(np.arange(len(y_test)), y_pred, color='red', linestyle='-', marker='x')

ax.set_xlabel('Sample Index')
ax.set_ylabel('Class')
ax.legend()

# 显示图表
plt.show()

 

 

九、K-均值:K-均值是一种常用的聚类算法,通过将数据点分配到最近的聚类中心,并更新聚类中心来迭代地调整聚类结果。

代码:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 使用PCA进行降维
pca = PCA(n_components=2)  # 降维到2维
X_pca = pca.fit_transform(X)

# 创建KMeans模型
kmeans = KMeans(n_clusters=3, random_state=42)

# 在降维后的数据上进行聚类
kmeans.fit(X_pca)

# 获取聚类结果
labels = kmeans.labels_

# 绘制聚类结果
plt.figure(figsize=(10, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=labels, cmap=plt.cm.Set1)
plt.title('K-Means Clustering of Iris Dataset')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()

 

十、K-相邻:K-相邻是一种简单的分类和回归方法,根据样本的最近邻居的标签来进行预测,通常用于小型数据集和简单模型的场景。

代码:

from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from scipy import stats
import matplotlib.pyplot as plt

# 加载数据集
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)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)  # 设置K值为3

# 在训练集上训练KNN模型
knn.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 生成准确率的折线图
k_values = range(1, 11)
accuracies = []

for k in k_values:
    knn = KNeighborsClassifier(n_neighbors=k)
    knn.fit(X_train, y_train)
    y_pred = knn.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    accuracies.append(accuracy)

plt.plot(k_values, accuracies, marker='o')
plt.rcParams['font.sans-serif']=['SimHei']
plt.xlabel('K 值')
plt.ylabel('准确率')
plt.title('KNN 模型不同 K 值下的准确率')
plt.show()

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AI Studio是一个面向人工智能开发者和研究者的平台,它提供了一系列工具和资源,帮助用户进行机器学习和深度学习项目的开发和实验。 关于鸢尾花数据集,它是一个常见的机器学习数据集之一,用于分类问题的训练和测试。该数据集包含了三个不同品种的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据。每个样本有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。通过这些特征,我们可以根据花的形态特征将其分类到三个品种中的一个。 使用AI Studio的鸢尾花数据集,我们可以进行多种机器学习任务。例如,我们可以使用分类算法来建立一个模型,根据花的特征判断其所属的品种。常用的分类算法包括逻辑回归、决策树、支持向量机和神经网络等。我们可以使用AI Studio提供的开发环境和工具,通过编写代码来实现这些算法,并通过训练和测试数据集对模型进行评估和优化。 另外,我们还可以使用AI Studio提供的数据可视化工具,对鸢尾花数据集进行可视化分析。通过绘制散点图、柱状图等图表,我们可以直观地观察不同品种花的特征分布情况,以及它们之间的差异和相似性。 总之,AI Studio提供了一个方便的平台,帮助我们进行鸢尾花数据集分析和应用。无论是进行机器学习模型的开发,还是对数据进行可视化分析,AI Studio都提供了丰富的工具和资源,帮助我们更好地理解和应用鸢尾花数据集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张謹礧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值