#-*-coding:utf-8-*-
"""
Created on Fri923:15:472017
@author
"""
#-*-coding:utf-8-*-
"""
Created on Tue May3020:31:022017
@author:
"""
import pandas as pd
import numpy as np
from sklearn.preprocessing import Imputer
from sklearn.cross_validation import train_test_split
from sklearn import svm
from sklearn import cross_validation
from sklearn.decomposition import PCA
from sklearn.lda import LDA
def loadData(filePath):
fr=open(filePath,'r+')
lines=fr.readlines()
Data=[]
label=[]
for line in lines:
items=line.strip().split(",")
label.append(items[0])
Data.append([float(items[i])for i in range(1,len(items))]) return Data,label
if__name__=='__main__':
x1_train,y1_train=loadData('C:\Users\Administrator\SPECTF.train') x_test,y_test=loadData('C:\Users\Administrator\SPECTF.test')
x_train=[]
y_train=[]
for i in range(23,37):
x_train.append(x1_train[i])
y_train.append(y1_train[i])
for i in range(173,187):
x_train.append(x1_train[i])
y_train.append(y1_train[i])
accuacy1=[]
accuacy2=[]
accuacy3=[]
for i in range(2,45):
for j in range(1,45):
lda=LDA(n_components=i)
#svd_solver:设置特征值分解的方法,默认为‘auto’,其他可选有
#‘full’,‘arpack’,‘randomized’
reduced_x_train=lda.fit_transform(x_train,y_train)
reduced_x_test=lda.fit_transform(x_test,y_test)
reduced_x_train,x_,y_train,y_=train_test_split(reduced_x_train, y_train,test_size=0.0)
clf1=svm.SVC(kernel='poly')
result=[]
clf1.fit(x_train,y_train)
result.append(np.mean(y_test==clf1.predict(x_test)))
accuacy1.append(result)
accuacy1.append(i)
clf2=svm.SVC(kernel='sigmoid')
result=[]
clf2.fit(x_train,y_train)
result.append(np.mean(y_test==clf2.predict(x_test)))
accuacy2.append(result)
accuacy2.append(i)
clf3=svm.SVC(kernel='linear')
result=[]
clf3.fit(x_train,y_train)
result.append(np.mean(y_test==clf3.predict(x_test)))
accuacy3.append(result)
accuacy3.append(i)
print("svm classifier accuacy1with poly kernel:",max(accuacy1),accuacy1[accuacy1.index(max(accuacy1))+1])
print("svm classifier accuacy1with sigmoid kernel:",max(accuacy2),accuacy2[accuacy2.index(max(accuacy2))+1])
print("svm classifier accuacy1with linear
kernel:",max(accuacy3),accuacy3[accuacy3.index(max(accuacy3))+1])。