实践——机器学习——基于支持向量机模型的应用案例

实验任务:

Iris数据集是机器学习任务中常用的分类实验数据集,由Fisher1936收集整理。Iris中文名是安德森鸢尾花卉数据集,英文全称是Andersons Iris data set,是一类多重变量分析的数据集。Iris一共包含150个样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(SetosaVersicolourVirginica)三个种类中的哪一类。

具体要求:

  • 导入数据:从sklearn库加载该数据集。
  • 数据探索性分析:可包括但不限于:查看数据的信息、数据维度、特征取值、特征的分布情况,特征之间的相关性等。
  • 划分数据集:将数据集划分为训练集和测试集。
  • 数据建模:
  1. 使用LinearSVC和SVC构建模型;
  2. 利用网格搜索进行超参数调优,如:对SVC中的参数“C”、“kernel”等,确定最优超参数。
  • 模型效果评估:输出评价指标。

 实践代码

导入数据
from sklearn import datasets
iris = datasets.load_iris()
数据探索性分析
# 数据探索性分析
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 转换为 DataFrame
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target

# 数据信息
print(iris_df.info())

# 数据维度
print(iris_df.shape)

# 特征取值和分布情况
print(iris_df.describe())
sns.pairplot(iris_df, hue='target')
plt.show()

# 特征之间的相关性
print(iris_df.corr())
sns.heatmap(iris_df.corr(), annot=True)
plt.show()
划分数据集
# 划分数据集
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
数据建模
from sklearn.svm import LinearSVC, SVC
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report

# 使用 LinearSVC 建模
linear_svc = LinearSVC()
linear_svc.fit(X_train, y_train)
y_pred = linear_svc.predict(X_test)
print("LinearSVC Model Evaluation:\n", classification_report(y_test, y_pred))

# 使用 SVC 建模并进行超参数调优
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10, 100]}
svc = SVC()
clf = GridSearchCV(svc, parameters)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print("SVC Model Evaluation with GridSearchCV:\n", classification_report(y_test, y_pred))
print("Best Parameters:\n", clf.best_params_)
模型效果评估
# 模型效果评估
from sklearn.metrics import accuracy_score, confusion_matrix

# LinearSVC 效果评估
print("LinearSVC Accuracy: ", accuracy_score(y_test, y_pred))
print("LinearSVC Confusion Matrix:\n", confusion_matrix(y_test, y_pred))

# SVC 效果评估
print("SVC Accuracy: ", accuracy_score(y_test, y_pred))
print("SVC Confusion Matrix:\n", confusion_matrix(y_test, y_pred))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

国王学会了编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值