向数据集加了一堆均值并没有提高多少
准确率为0.8。感觉乱塞特征并没有多大提升。特征加了一堆换了SVM决策树,提升树,随机森林准确率都一般。自己一个人做不上于是不做了。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import torch
import torch.fft as fft
from sklearn import tree
df = pd.read_csv('train.csv')
df=df.drop(['ID'],axis=1)
nmp=df.to_numpy()
feature=nmp[:,:-1]
df=pd.DataFrame(feature)
sk=np.reshape(np.array(df.skew(axis=1)),(-1,1))
Q25=np.reshape(np.array(df.quantile(q=0.25,axis=1)),(-1,1))
Q75=np.reshape(np.array(df.quantile(q=0.75,axis=1)),(-1,1))
dmedia=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).median(axis=1)),(-1,1))
dsk=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).skew(axis=1)),(-1,1))
dQ25=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).quantile(q=0.25,axis=1)),(-1,1))
dQ75=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).quantile(q=0.75,axis=1)),(-1,1))
dk=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).kurtosis(axis=1)),(-1,1))
dmax=np.reshape(np.array(df.diff(axis=1).dropna(axis=1)).max(axis=1),(-1,1))
dmin=np.reshape(np.array(df.diff(axis=1).dropna(axis=1)).min(axis=1),(-1,1))
range_diff1=dmax-dmin
dvar=np.reshape(np.array(df.diff(axis=1).dropna(axis=1)).var(axis=1),(-1,1))
dstd=np.reshape(np.array(df.diff(axis=1).dropna(axis=1)).std(axis=1),(-1,1))
dmean=np.reshape(np.array(df.diff(axis=1).dropna(axis=1)).mean(axis=1),(-1,1))
feature=nmp[:,:-1]
label=nmp[:,-1]#(210,240)
min=np.reshape(nmp[:,:-1].min(-1),(-1,1))
max=np.reshape(nmp[:,:-1].max(-1),(-1,1))
ra=min-max
var=np.reshape(np.var(nmp[:,:-1],axis=1),(-1,1))
std=np.reshape(np.std(nmp[:,:-1],axis=1),(-1,1))
mean=np.reshape(np.mean(nmp[:,:-1],axis=1),(-1,1))
media=np.reshape(np.median(nmp[:,:-1],axis=1),(-1,1))
feature1=torch.fft.fft(torch.Tensor(feature))
feature1=torch.abs(feature1)/240*2
feature1=feature1.detach().numpy()
df=pd.DataFrame(feature1)
sk3=np.reshape(np.array(df.skew(axis=1)),(-1,1))
Q253=np.reshape(np.array(df.quantile(q=0.25,axis=1)),(-1,1))
Q753=np.reshape(np.array(df.quantile(q=0.75,axis=1)),(-1,1))
dmax3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).max(axis=1)),(-1,1))
dmin3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).min(axis=1)),(-1,1))
range_diff3=dmax-dmin
dvar3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).var(axis=1)),(-1,1))
dstd3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).std(axis=1)),(-1,1))
dmean3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).mean(axis=1)),(-1,1))
dmedia3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).median(axis=1)),(-1,1))
dsk3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).skew(axis=1)),(-1,1))
dQ253=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).quantile(q=0.25,axis=1)),(-1,1))
dQ753=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).quantile(q=0.75,axis=1)),(-1,1))
dk3=np.reshape(np.array(df.diff(axis=1).dropna(axis=1).kurtosis(axis=1)),(-1,1))
min1=np.reshape(feature1.min(-1),(-1,1))
max1=np.reshape(feature1.max(-1),(-1,1))
var1=np.reshape(np.var(feature1,axis=1),(-1,1))
std1=np.reshape(np.std(feature1,axis=1),(-1,1))
mean1=np.reshape(np.mean(feature1,axis=1),(-1,1))
media1=np.reshape(np.median(feature1,axis=1),(-1,1))
import scipy
kur=np.reshape(scipy.stats.kurtosis(feature,axis=1),(-1,1))
ne=np.concatenate((dmin3,range_diff3,dvar3,dstd3,dmean3,dmedia3,dsk3,dQ253,dQ753,dk3,dmax3,sk3,Q253,Q753,dmax,range_diff1,dvar,dmean,dstd,dmin,dmedia,dsk,dQ25,dQ75,dmax,dmin,dvar,dstd,dmean,range_diff1,sk3,Q25,Q75,sk,kur,feature,ra,min,max,var,std,mean,media,feature1,min1,max1,var1,std1,mean1,media1),axis=1)
#ne=np.concatenate((dmedia,dvar,dstd,range_diff1,dmax,dmin,Q25,Q75,sk,kur,feature,ra,min,max,var,std,mean,media,feature1,min1,max1,var1,std1,mean1,media1),axis=1)
from sklearn.model_selection import cross_val_score
from sklearn import svm
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.neighbors import KNeighborsClassifier
for i in range(30):
#clf = KNeighborsClassifier(n_neighbors=i+1,weights='distance')
#for j in range(20):
#clf=RandomForestClassifier(n_estimators=i*50+1,max_depth=3)
#clf=GradientBoostingClassifier(max_depth=i+1)
clf=tree.DecisionTreeClassifier(criterion='entropy',random_state=0,max_depth=i+1)
#clf = svm.SVC(kernel = 'rbf')
scores = cross_val_score(clf,ne,label,cv=10)
print(i,scores.mean())

浙公网安备 33010602011771号