python数据分析与应用:第六章课后实训

实验名称 应用sklearn分析竞标数据

一、实验目的

1、掌握skleam转换器的用法。
2、掌握训练集、测试集划分的方法。
3、掌握使用sklearm进行PCA降维的方法。
4、掌握 sklearn 估计器的用法。
5、掌握聚类模型的构建与评价方法。
6、掌握分类模型的构建与评价方法。
7、掌握回归模型的构建与评价方法。

二、实验仪器设备或材料


笔记本电脑,Anaconda软件,数据集文件(找老师或者在学习通的课程资料中下载)

数据集文件如下:


三、实验原理


任务1:使用sklearn处理竞标行为数据集。
1、需求说明
竞标行为数据集(shill bidding.csv)是网络交易平台eBay为了分析竞标者的竞标行为而收集整理的部分拍卖数据,包括记录ID、竞标者倾向、竞标比率等11个输入特征和I个类别标签,共6321条记录,其特征/标签说明如表6-18所示。通过读取竞标行为数据集,进行训练集和测试集的划分、为后续的模型构建提供训练数据和测试数据;并对数据集进行降维,以适当减少数据的特征维度。

任务2:构建基于竞标行为数据集的K-Means聚类模型。
1、需求说明
使用实训1中的竞标行为数据集,竞标行为标签总共分为2种(0表示正常竞标行为,1表示非正常竟标行为)为了通过竞标者的行为特征将竞标行为划分为簇,选择数据集中的竞标者倾向、竞标比率,连续竞标3个特征,构建K-Means模型,对这3个特征的数据进行聚类,聚集为2个族,实现竞标行为的类别划分,并对聚类模型进行评价,确定最优聚类数目。

任务3:构建基于竞标行为数据集的支持向量机分类模型。
1、需求说明
对实训1中的竞标行为数据集进行训练集和测试集的划分,为了对竞标者的竞标行为进行类别判断、根据训练集构建支持向量机分类模型、通过训练完成的模型判断测试集的竞标行为类别归属,并对分类模型性能进行评价。

任务4:构建基于竞标行为数据集的回归模型。
1、需求说明
对实训1中的竞标行为数据集进行训练集和测试集的划分,为了对竞标者的竞标行为进行预测.构建线性回归模型,用训练集对线性回归模型进行训练,并对测试集进行预测;计算回归模型评价指标得分,通过得分评价回归模型的优劣。

四、实验内容与步骤

内容:
任务1:使用sklearn处理竞标行为数据集。
1、实现思路与步骤
(1)使用pandas库读取竞标行为数据集。
(2)对竞标行为数据集的数据和标签进行划分。
(3)将竞标行为数据集划分为训练集和测试集,测试集数据量占总样本数据量的20%。
(4)对竞标行为数据集进行PCA降维,设定n-components=0.999、即降维后数据能保留的信息为原来的99.9%、并查看降维后的训练集、测试集的大小。
任务2:构建基于竞标行为数据集的K-Means聚类模型。
1、实现思路与步骤
(1)选取竟标行为数据集中的竞标者倾向、竞标比率、连续竞标、类别特征。
(2)构建K-Means模型。
(3)使用ARl评价法评价建立的 K-Means模型。
(4)使用V-measure评分评价建立的K-Means模型。
(5)使用FMI评价法评价建立的 K-Means模型,并在聚类数目为1-3类时,确定最优聚类数目。
任务3:构建基于竞标行为数据集的支持向量机分类模型。
1、实现思路与步骤
(1)标准差标准化构建的训练集和测试集。
(2)构建支持向量机模刑,并预测测试集前10个数据的结果。
(3)打印分类模型评价报告、评价分类模型性能。
任务4:构建基于竞标行为数据集的回归模型。
1、实现思路与步骤
(1)根据竟标行为训练集构建线性回归模型,并预测测试集结果。
(2)分别计算线性回归模型各自的平均绝对误差、均方误差、R值。
(3)根据得分,判定模型的性能优劣。

实验:

任务一:

import pandas as pd
bidding = pd.read_csv('./data/shill_bidding.csv', encoding='gbk', header=None)
# 将类别一列转换为数值类型
# bidding['类别'] = pd.Categorical(bidding['类别']).codes

# 拆分数据和标签
bidding_data = bidding.iloc[1:, 2: -1]
bidding_target = bidding.iloc[1:, -1]
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
bidding_data_train, bidding_data_test, \
bidding_target_train, bidding_target_test = \
train_test_split(bidding_data, bidding_target, test_size=0.2, random_state=123)
# PCA降维
from sklearn.decomposition import PCA

pca = PCA(n_components=8).fit(bidding_data_train) #生成规则
bidding_trainPca = pca.transform(bidding_data_train) #应用规则
bidding_testPca = pca.transform(bidding_data_test)

print(bidding_trainPca.shape)  # 降维后的训练集数据大小
print(bidding_testPca.shape)  # 降维后的测试集数据大小

运行结果:


任务二:

# kmeans聚类
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=2, random_state=66).fit(bidding_data_train)

# ARI评价法
from sklearn.metrics import adjusted_rand_score
ari_score = adjusted_rand_score(bidding_target_train, kmeans.labels_)
print('竞标行为数据集的ARI:' ,(ari_score))

# V-measure评分
from sklearn.metrics import completeness_score
V_measure_score = completeness_score(bidding_target_train, kmeans.labels_)
print('竞标行为数据集的V-measure:' ,(V_measure_score))

# fmi评价法
from sklearn.metrics import fowlkes_mallows_score
fmi_score = fowlkes_mallows_score(bidding_target_train, kmeans.labels_)
print('竞标行为数据集的FMI:',(fmi_score))

# 确定聚类数目为1~3时的最优聚类数
for i in range(1, 4):
    kmeans = KMeans(n_clusters=i, random_state=66).fit(bidding_data_train)
    score = fowlkes_mallows_score(bidding_target_train, kmeans.labels_)
    print('竞标行为数据聚%d类 FMI评价分值为:' ,(i, score))
print("接近1为最佳,所以聚类为1的时候效果最好")

运行结果:


任务三:

# 1标准化数据集
from sklearn.preprocessing import StandardScaler 
stdScale = StandardScaler().fit(bidding_data_train) 
bidding_trainScaler = stdScale.transform(bidding_data_train)
bidding_testScaler = stdScale.transform(bidding_data_test)


# 2构建SVM模型,并预测测试集结果
from sklearn.svm import SVC 
svm = SVC().fit(bidding_trainScaler, bidding_target_train)
bidding_target_pred = svm.predict(bidding_testScaler)
print('预测前10个结果为:', bidding_target_pred[: 10])
print('\n')
# 3打印出分类报告,评价分类模型性能
from sklearn.metrics import classification_report
print('使用SVM预测customer数据的分类报告为:', '\n', 
      classification_report(bidding_target_test, bidding_target_pred))

运行结果:


任务四

from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsRegressor
from sklearn.decomposition import PCA
# PCA降维
pca = PCA(n_components=0.999).fit(bidding_data_train) 
bidding_trainPca = pca.transform(bidding_data_train) 
bidding_testPca = pca.transform(bidding_data_test)

# 线性回归模型
bidding_linear = LinearRegression().fit(bidding_trainPca, bidding_target_train)
y_pred = bidding_linear.predict(bidding_testPca)

# 计算平均绝对误差、均方误差、R方值
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
print('线性回归模型预测的结果为:', y_pred)
print('线性回归模型评价结果')
print('数据线性回归模型的平均绝对误差为:', 
      mean_absolute_error(bidding_target_test, y_pred))
print('数据线性回归模型的均方误差为:',
      mean_squared_error(bidding_target_test, y_pred))
print('数据线性回归模型的R方值为:', 
      r2_score(bidding_target_test, y_pred))

运行结果:

好的,针对您的问题,我可以给出以下步骤来使用sklearn处理竞标行为数据集: 1. 导入必要的库和数据集 ``` import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score data = pd.read_csv('竞标行为数据集.csv') ``` 2. 数据预处理 在这一步中,我们需要对数据进行清洗和处理,包括缺失值处理、异常值处理、特征选择等。这里我们假设数据已经经过了预处理,因此跳过这一步。 3. 数据划分 将数据集划分为训练集和测试集,以便我们可以在训练集上训练模型,在测试集上评估模型的性能。 ``` X = data.drop('是否中标', axis=1) y = data['是否中标'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 4. 特征标准化 由于数据集中的特征值范围不同,我们需要对其进行标准化,以便模型可以更好地学习。 ``` scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) ``` 5. 训练模型 使用逻辑回归模型进行训练。 ``` model = LogisticRegression() model.fit(X_train, y_train) ``` 6. 评估模型 使用测试集评估模型的性能。 ``` y_pred = model.predict(X_test) print('Accuracy:', accuracy_score(y_test, y_pred)) ``` 以上就是使用sklearn处理竞标行为数据集的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值