机器学习—回归与分类4-4(支持向量机算法)
In [ ]:
# 导入包
import numpy as np
import pandas as pd
2. 导入数据集
In [ ]:
# 导入数据集
data = pd.read_csv('BlackFriday.csv')
data.head()
3. 数据预处理
3.1 检测并处理缺失值
In [ ]:
# 检测缺失值
null_df = data.isnull().sum()
null_df
In [ ]:
# 删除缺失列
data = data.drop(['Product_Category_2', 'Product_Category_3'], axis = 1)
data.head()
In [ ]:
# 再次检测缺失值
null_df = data.isnull().sum()
null_df
3.2 删除无用的列
In [ ]:
# 删除无用的列
data = data.drop(['User_ID', 'Product_ID'], axis = 1)
3.3 检查类别型变量
In [ ]:
# 检查类别型变量
print(data.dtypes)
In [ ]:
# 转换变量类型
data['Stay_In_Current_City_Years'].replace('4+', 4, inplace = True)
data['Stay_In_Current_City_Years'] = data['Stay_In_Current_City_Years'].astype('int64')
data['Product_Category_1'] = data['Product_Category_1'].astype('object')
data['Occupation'] = data['Occupation'].astype('object')
data['Marital_Status'] = data['Marital_Status'].astype('object')
In [ ]:
# 检查类别型变量
print(data.dtypes)
3.4 标签编码&独热编码
In [ ]:
# 标签编码&独热编码
data = pd.get_dummies(data, drop_first = True)
data.head()
3.5 得到自变量和因变量
In [ ]:
# 得到自变量和因变量
y = data['Purchase'].values
data = data.drop(['Purchase'], axis = 1)
x = data.values
3.6 拆分训练集和测试集
In [ ]:
# 拆分训练集和测试集
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 1)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 1)
print(x_train.shape)
print(x_test.shape)
print(y_train.shape)
print(y_test.shape)
3.7 特征缩放
In [ ]:
# 特征缩放
from sklearn.preprocessing import StandardScaler
sc_x = StandardScaler()
x_train = sc_x.fit_transform(x_train)
x_test = sc_x.transform(x_test)
sc_y = StandardScaler()
y_train = np.ravel(sc_y.fit_transform(y_train.reshape(-1, 1)))
4. 使用不同的参数构建支持向量机模型
4.1 模型1:构建支持向量机模型
4.1.1 构建模型
程序大约需要执行2分钟
In [ ]:
# 使用不同的参数构建支持向量机模型
# 模型1:构建支持向量机模型(kernel=rbf)
from sklearn.svm import SVR
regressor = SVR(kernel = 'rbf', gamma='scale', C=1.0, epsilon=0.1, verbose=True)
regressor.fit(x_train, y_train)
4.1.2 测试集做预测
In [ ]:
# 在测试集做预测
y_pred = regressor.predict(x_test)
y_pred[:5]
In [ ]:
# y_pred变回特征缩放之前的
y_pred = sc_y.inverse_transform(y_pred)
y_pred[:5]
4.1.3 评估模型性能
In [ ]:
# 评估模型性能
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
print("R2 Score:", r2)
4.2 模型2:构建支持向量机模型
程序大约需要执行2分钟
In [ ]:
# 模型2:构建支持向量机模型(kernel=poly, degree=2)
regressor = SVR(kernel = 'poly', degree=2, gamma='scale', C=1.0, epsilon=0.1, verbose=True)
regressor.fit(x_train, y_train)
In [ ]:
# 在测试集做预测
y_pred = regressor.predict(x_test)
In [ ]:
# y_pred变回特征缩放之前的
y_pred = sc_y.inverse_transform(y_pred)
In [ ]:
# 评估模型性能
r2 = r2_score(y_test, y_pred)
print("R2 Score:", r2)
4.3 模型3:构建支持向量机模型
程序大约需要执行2分钟
In [ ]:
# 模型3:构建支持向量机模型(kernel=poly, degree=3)
regressor = SVR(kernel = 'poly', degree=3, gamma='scale', C=1.0, epsilon=0.1, verbose=True)
regressor.fit(x_train, y_train)
In [ ]:
# 在测试集做预测
y_pred = regressor.predict(x_test)
In [ ]:
# y_pred变回特征缩放之前的
y_pred = sc_y.inverse_transform(y_pred)
In [ ]:
# 评估模型性能
r2 = r2_score(y_test, y_pred)
print("R2 Score:", r2)
结论:
- 由上面3个模型可见,不同超参数对模型性能的影响不同。
分类:
数据科学 / 机器学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具