数据挖掘大作业
|
姓名 | 学号 |
---|---|
段阳阳 | 20185111075 |
王浩 | 20185111045 |
贾德智 | 20185111076 |
周成成 | 20185111033 |
乔伟 | 20185111046 |
刘宗敏 | 20185111006 |
数据读取
import pandas as pd
import numpy as np
#train= np.loadtxt(‘zhengqi_train.txt’,delimiter=’\t’)#导入数据
train=pd.read_csv(‘zhengqi_train.txt’,sep=’\t’)
test=pd.read_csv(‘zhengqi_test.txt’,sep=’\t’)
#test=np.loadtxt(‘zhengqi_test.txt’,delimiter=’\t’’)
train_x=train.drop([‘target’],axis=1)
all_data = pd.concat([train_x,test])
数据分析与数据观察(可视化)
import seaborn
import matplotlib.pyplot as plt
for col in all_data.columns:
seaborn.distplot(train[col])
seaborn.distplot(test[col])
plt.show()
由上面的图可知v5,v17,v28,v22,v11,v9的训练集和测试集的分布基本上不一致,这对模型的泛化能力有很大的影响,所以应该剔除
all_data.drop([‘V5’,‘V17’,‘V28’,‘V22’,‘V11’,‘V9’],axis=1,inplace=True)
对删除后的数据进行投影,简化数据的维度
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def meanX(dataX):
return np.mean(dataX,axis=0)#按列求均值
返回样本协方差的特征值
def variance(X):
average = meanX(XMat)
m, n = np.shape(XMat)
data_adjust = []
avgs = np.tile(average, (m, 1))#在列方向上重复average m次,在行上重复1次
data_adjust = XMat - avgs
covX = np.cov(data_a