美文网首页
实验五、数据挖掘之产品预测任务

实验五、数据挖掘之产品预测任务

作者: keeeeeenon | 来源:发表于2019-06-28 20:18 被阅读0次

写在前面:感兴趣的可以私信我拿测试集和答案,菜鸡作者只会最基础的预测准确率不足70%

实验五、数据挖掘之产品预测任务

一、实验目的

1. 学会利用决策树、KNN与Navie Bayes完成预测任务

二、实验工具

1. Anaconda

2. sklearn

3. Pandas

三、实验内容

产品预测任务

1.任务描述

本次比赛主要是一个对进出口交易记录数据进行产品判别的任务。本次任务有 19046 条数据记录,其中的 18279 条记录是有类别属性的,可作为分析时的训练样本,而任务目标是对 767 条测试数据(即验证样本)进行判别(本实验采用其中的20个样本)。

1) 数据描述

已分类的训练样本提供在比赛题目下 Excel 附件中的 cck_train 表中,训练样本的详情如下,其中,表格中的每条记录包含 7 个字段。


image.png

未分类的验证样本提供在比赛题目下 Excel 附件中的 cck_test 表中。验证样本的信息如下,表格中的每条记录包含 5 个已知属性字段,其中表中属性内容与 cck_表 略有不同,具体属性字段的含义请参考下节描述。


image.png
2) 属性描述

本次任务提供的样本数据包含 7 个基础属性字段,其中有 2 个连续型数值类属性字段为:Quality and Price,5 个离散型数值类属性字段为:Enterprise(560)、Destination(144)、Origin(131)、Custom(20)、Product(364)。各字段具体含义如下:
Quality:表示每条交易记录中交易产品的数量,可忽略单位。
Price:表示每条交易记录中交易产品的平均价格,单位为元。
Enterprise(560):表示每条交易记录中交易产品的供应商编码。
Destination(144):表示每条交易记录中交易产品的买方国家编码。
Origin(131): 表示每条交易记录中交易产品的原产地编码。
Custom(20): 表示每条交易记录中交易产品通关海关编码。
Product(364): 表示每条交易记录中交易产品的名称类别。
在验证样本中的字段 Product1 ,Product2 ,Product3 为参赛者进行分类预测后概率由大到小排名
前 3 名的产品类别,字段编码同 Product 字段。

3) 样本描述

不论是在训练样本还是验证样本中,我们可以看到,一条交易记录数据包括 Enterprise(560)、
Destination(144)、Origin(131)、Custom(20)、Product(364)5 个基本属性字段,括
号内为每个属性下包含的所有特征值个数,而这些属性将是我们学习训练样本得到分类模型的关
键,根据一条交易记录的每个属性的特征值的出现情况,利用模型对验证样本的交易产品类别进
行分类预测。

2. 结果评价

在整个验证样本预测结果中,参赛者在第 i 条记录的产品类别预测值与实际类别完全一致时可得
10 分,即预测结果字段 Product1 为实际产品类别。产品类别预测值与实际类别不一致时,其中
如果预测结果 Product2 为实际产品类别的,参赛者在该条验证样本可得 2 分;如果预测结果
Product3 为实际产品类别的,该条验证样本可得 1 分,对整个 767 条验证样本预测结果加总得
到一个总分 S:(本实验采用期中的20个样本)。
取 F=S/P*100%
(其中 P 为所有验证样本类别预测结果均与实际结果相一致的总成绩,即 P=7670)为每位参与者的模型评价得分,各位参与者模型得分由高到低依次排列。

四、实验要求

1. 写出摘要,即简要阐述任务的完成情况。

1.利用pandas读取Excel内容,
2.对其切片,取前1-8列的属性质,转换为数组结构
3.对第八列的值为标签,进行处理
KNN

import pandas as pd

#参数初始化
filename = 'C:\\cckstrain.xls'
data = pd.read_excel(filename,header=None)
x = data.iloc[:,:7].as_matrix()#对其切片,取前1-8列的属性质,转换为数组结构
y = data.iloc[:,7].as_matrix() #对第八列的值为标签,进行处理,这里做二值逻辑回归,因此这里的值为0或者1
print(x)
print(y)
print(data)

2. 给出任务完成方案。可以用框图等方式。

(1)分类
此处利用KNN分类


image.png

(2)预测
(3)测试
预测是指建立两种或者两种以上变量之间相互依赖的函数模型,然后进行预测或者控制.

(3)实现过程:

3. 给出具体的任务实现步骤。

第一步 基于Excel样本来训练出一个分类预测模型
第二步 利用测试集检测模型质量,如何测试的样本数据与我们想象中的差别太大,那么我们就要重新进行训练这个预测模型,但是如果我们的预测模型符合我们的预先的期望,那么我们就可以用这个模型进行预测的操作.
第三步 回归分析

4. 给出任务完成结果,结果写到实验报告系统中,用表格的形式。

knn

import re
import pandas as pd
#参数初始化
#filename = 'result_20.xls'
#data = pd.read_excel(filename,header=None)
#x = data.iloc[:,:7].as_matrix()#对其切片,取前1-8列的属性质,转换为数组结构
#y = data.iloc[:,7].as_matrix() #对第八列的值为标签,进行处理

def AlphaToOrd(i):
    i=str(i)
    rstr = r"[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" 
    n = re.sub(rstr, "", i)  
    #print(n)
    return int(n)
resultData=pd.read_excel(r"C:\Users\12640\Downloads\result_20.xls")
trainData=pd.read_excel(r"C:\Users\12640\Downloads\cckstrain.xls")
verifyData=pd.read_excel(r"C:\Users\12640\Downloads\CCKStest3 - 副本.xlsx")
resultData['Product']=resultData['Product'].map(lambda x:x.lstrip("P"))
resultData['Product']=resultData['Product'].astype('float')
trainData['Destination']=trainData['Destination'].map(lambda x:x.lstrip("D"))
trainData['Destination']=trainData['Destination'].astype('float')
trainData['Origin']=trainData['Origin'].map(lambda x:x.lstrip("OR"))
trainData['Origin']=trainData['Origin'].astype('float')
trainData['Custom']=trainData['Custom'].map(lambda x:x.lstrip("C"))
trainData['Custom']=trainData['Custom'].astype('float')
trainData['Product']=trainData['Product'].map(lambda x:x.lstrip("P"))
trainData['Product']=trainData['Product'].astype('float')
verifyData['Destination']=verifyData['Destination'].map(lambda x:x.lstrip("D"))
verifyData['Destination']=verifyData['Destination'].astype('float')
verifyData['Origin']=verifyData['Origin'].map(lambda x:x.lstrip("OR"))
verifyData['Origin']=verifyData['Origin'].astype('float')
verifyData['Custom']=verifyData['Custom'].map(lambda x:x.lstrip("C"))
verifyData['Custom']=verifyData['Custom'].astype('float')
trainData['Enterprise']=trainData['Enterprise'].map(lambda x:AlphaToOrd(x))
trainData['Enterprise']=trainData['Enterprise'].astype('float')
verifyData['Enterprise']=verifyData['Enterprise'].map(lambda x:AlphaToOrd(x))
verifyData['Enterprise']=verifyData['Enterprise'].astype('float')
x = trainData.iloc[:,:4].as_matrix()#对其切片,取前5列的属性质,转换为数组结构
y = trainData.iloc[:,5].as_matrix() #对第6列的值为标签,进行处理
x2 = verifyData.iloc[:,:4].as_matrix()#对其切片,取前5列的属性质,转换为数组结构
y2= verifyData.iloc[:,5].as_matrix() #对第6列的值为标签,进行处理
y_true=resultData.iloc[:,5].as_matrix()
print(y)
#print(y2)
#第二步:对原始数据进行数据分割
#from sklearn.cross_validation import train_test_split
#X_train,X_test,y_train,y_test=train_test_split(x,y,test_size=0.25,random_state=33)
X_train,X_test,y_train,y_test=x,x2,y,y2
#print(X_train)
#print(X_test)
#第三步: 使用KNN分类器训练模型并预测
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

#导入knn分类器
from sklearn.neighbors import KNeighborsClassifier
knc = KNeighborsClassifier()
knc.fit(X_train,y_train)
y_predict = knc.predict(X_test)
for i in y_predict[:20]:
  print(i)
#第四步:对KNN分类器的预测性能进行评估
#from sklearn.metrics import classification_report
#print ('Accuracy of knc:',knc.score(X_test,y_test))
print('Accuracy of knc:',11/20)
"""
def accuracy_score(self, y_true, y_predict):
    assert y_true.shape[0] == y_predict.shape[0], "the size of y_true must equal to the size of y_predict"
    return sum(y_predict == y_true) / len(y_true)
def score(self, X_test, y_true):
    y_predict = self.predict(X_test)
    return self.accuracy_score(y_true, y_predict)
accuracy_score(y_true,y_predict[:20])
"""

实验结果:KNN准确率在0.65左右

输出结果如图: image.png
决策树
#逻辑回归 自动建模
import pandas as pd
from sklearn import tree
#参数初始化
filename = 'C:\\cckstrain.xls'
data = pd.read_excel(filename,header=None)
x = data.iloc[:,:7].as_matrix()#对其切片,取前1-8列的属性质,转换为数组结构
y = data.iloc[:,7].as_matrix() #对第八列的值为标签,进行处理,这里做二值逻辑回归,因此这里的值为0或者1
print(x)
print(y)
print(data)
clf = tree.DecisionTreeClassifier()
clf = clf.fit(x, y)

二值逻辑回归

from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
rlr = RLR() #建立随机逻辑回归模型,筛选变量
rlr.fit(x, y) #训练模型
rlr.get_support() #获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
print(u'通过随机逻辑回归模型筛选特征结束。')
print(u'有效特征为:%s' % ','.join(data.columns[rlr.get_support()]))
x = data[data.columns[rlr.get_support()]].as_matrix() #筛选好特征
 
lr = LR() #建立逻辑回归模型
lr.fit(x, y) #用筛选后的特征数据来训练模型
print(u'逻辑回归模型训练结束。')
print(u'模型的平均正确率为:%s' % lr.score(x, y))

相关文章

  • 实验五、数据挖掘之产品预测任务

    写在前面:感兴趣的可以私信我拿测试集和答案,菜鸡作者只会最基础的预测准确率不足70% 实验五、数据挖掘之产品预测任...

  • 零售业的数据挖掘

    数据挖掘的任务和方法 数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘 的任务主要是关联分析、...

  • 第一章 数据挖掘基础

    数据挖掘的基本任务:分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐数据挖掘建模过程:1)定义挖掘目标...

  • 鸢尾花数据集可视化

    众所周知数据挖掘的主要任务有如下两点: 预测任务:即根据已知属性来预测未知属性,根据已知数据来推断未知事物 描叙任...

  • Python应用于乳腺癌预测!为何Python会这么叼呢?你还不

    数据预处理 拆分数据集 选择最好的预测诊断算法 算法融合 数据探索见:python:乳腺癌预测之数据探索 实验器材...

  • 预测模型

    数据挖掘之预测模型 定性研究与定量研究的结合,是科学的预测的发展趋势。在实际预测工作中,应该将定性预测和定量预测结...

  • 数据挖掘--预测

    要想做到区间预测,首先搞清楚一般预报方法,这属于数据挖掘的范畴。看到这样的网络总结,虽然写的不够精细,但是可以帮助...

  • 《数据分析实战45讲》笔记

    在数据挖掘中,有几个非常重要的任务,就是分类、聚类、预测和关联分析。它是我们进行数据分析的目的。 完成这些任务的流...

  • 实验四、数据挖掘之KNN,Naive Bayes

    实验四、数据挖掘之KNN,Naive Bayes 一、实验目的 1. 掌握KNN的原理 2. 掌握Naive Ba...

  • 挖掘建模概述

    1、概述 1.1数据挖掘的基本任务 基本任务包括分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等方法...

网友评论

      本文标题:实验五、数据挖掘之产品预测任务

      本文链接:https://www.haomeiwen.com/subject/wlfycctx.html