-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparkinson.py
More file actions
118 lines (84 loc) · 3.19 KB
/
parkinson.py
File metadata and controls
118 lines (84 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import pandas as pd
import numpy as np
from sklearn import svm
from sklearn import cross_validation
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
import pylab as pl
from sklearn.cross_validation import KFold
predictors = ['age','sex','test_time','Jitter(Abs)','Jitter:RAP','Jitter:PPQ5','Jitter:DDP','Shimmer','Shimmer(dB)','Shimmer:APQ3','Shimmer:APQ5','Shimmer:APQ11','Shimmer:DDA','NHR','HNR','RPDE','DFA','PPE']
#target1 = ['motor_UPDRS']
targer1 = ['total_UPDRS']
def read_csv(filename):
df = pd.read_csv(filename,sep = ',')
return df
def process_svr(df):
bestsc = -100
bestpara = 1
for c in pl.frange(0.5,1.5,0.1):
clf = svm.SVR(C =c )
scores = cross_validation.cross_val_score(clf,df[predictors],df[target1].values.ravel(),cv = 5)
score = np.mean(scores)
if (bestsc < score):
bestsc = score
bestpara = c
return bestpara
def process_lienar(df):
lin = LinearRegression()
lin.fit(df[predictors],df[target1].values.ravel())
def training_predict_lin(df):
results =[]
#独立重复10次
for train,test in KFold(len(df),n_folds = 10,shuffle = True):
clf = LinearRegression()
clf.fit(df[predictors].T[train].T,df[target1].T[train].values.ravel())
sc = clf.score(df[predictors].T[test].T,df[target1].T[test].values.ravel())
results.append(sc)
return results
def training_predict_svr(df):
results =[]
#独立重复10次
for train,test in KFold(len(df),n_folds = 10,shuffle = True):
para = process_svr(df.T[train].T)
clf = svm.SVR(C = para)
clf.fit(df[predictors].T[train].T,df[target1].T[train].values.ravel())
sc = clf.score(df[predictors].T[test].T,df[target1].T[test].values.ravel())
results.append(sc)
return results
def process_ridge(df):
bestpara = 0
bestsc = -1000
for alp in pl.frange(0.5,1.5,0.1):
clf = Ridge(alpha = alp)
scores = cross_validation.cross_val_score(clf,df[predictors],df[target1].values.ravel(),cv = 5)
score = np.mean(scores)
if (bestsc < score):
bestsc = score
bestpara = alp
return bestpara
def training_predict_ridge(df):
results =[]
#独立重复10次
for train,test in KFold(len(df),n_folds = 10,shuffle = True):
para = process_ridge(df.T[train].T)
clf = Ridge(alpha = para)
clf.fit(df[predictors].T[train].T,df[target1].T[train].values.ravel())
sc = clf.score(df[predictors].T[test].T,df[target1].T[test].values.ravel())
results.append(sc)
return results
if __name__=='__main__':
df = read_csv('parkinsons_updrs.data')
print('svr:')
ret = training_predict_svr(df)
print(ret)
print(np.mean(ret))
print('\n linear_model')
ret_linear = training_predict_lin(df)
print(ret_linear)
print(np.mean(ret_linear))
print('\n ridge regression')
ret_ridge = training_predict_ridge(df)
print(ret_ridge)
print(np.mean(ret_ridge))
#x_train,x_test,y_train,y_test = cross_validation.train_test_split(data,tar1,test_size = 0.4,random_state=0)