- 金錢
- 46
- 威望
- 3183
- 貢獻值
- 0
- 推廣值
- 0
- 性別
- 保密
- 在線時間
- 38 小時
- 最後登錄
- 2024-2-25
- 主題
- 0
- 精華
- 0
- 閱讀權限
- 70
- 註冊時間
- 2012-3-17
- 帖子
- 556
 
該用戶從未簽到 - 推廣值
- 0
- 貢獻值
- 0
- 金錢
- 46
- 威望
- 3183
- 主題
- 0
|
import numpy as np( t( X) D$ t+ n1 V. t: O. b# R9 Z
import matplotlib.pyplot as plt" e8 |6 }/ i0 V6 {8 ^
- T1 d' a; n* Q' W0 o2 D, _: zimport utilities ; g* _. Q- ^. O5 r0 y
' t* |7 ?. ]2 Z4 b3 J4 I# Load input data
- B5 n2 D. N9 j8 K6 Ninput_file = 'D:\\1.Modeling material\\Py_Study\\2.code_model\\Python-Machine-Learning-Cookbook\\Python-Machine-Learning-Cookbook-master\\Chapter03\\data_multivar.txt'' Z' V. B& ?6 M \1 [
X, y = utilities.load_data(input_file)
% ?; M1 H* Q- ~) A. z/ L
3 W) ]! A3 }" p: P###############################################
( w. C1 u3 k/ H s9 M# Separate the data into classes based on 'y'6 x9 H; Q' a7 \0 \, D* t
class_0 = np.array([X[i] for i in range(len(X)) if y[i]==0])
5 K# Z4 ~) s- H7 ?: wclass_1 = np.array([X[i] for i in range(len(X)) if y[i]==1]) ~% B3 T9 a; a) o; V3 _5 N% t% d
/ Y! x; h7 z6 E L ^( ]. O$ ^& x
# Plot the input data) D7 [5 t" h; u; Y6 z7 X
plt.figure()
! m0 s V5 E% l* _/ B# ~plt.scatter(class_0[:,0], class_0[:,1], facecolors='black', edgecolors='black', marker='s')* X. r0 e& {# C3 {* r0 K: w7 @7 W
plt.scatter(class_1[:,0], class_1[:,1], facecolors='None', edgecolors='black', marker='s')
/ h8 y/ x! b( y7 E Mplt.title('Input data')
2 L" z, k$ ?$ d( E" `1 P0 Q% [- S1 m: k, [( v; A% h: @) i
###############################################
+ x) H& n8 H7 A: ?$ c1 @6 V. ?: f* u# Train test split and SVM training
+ \) ]3 b4 T- l5 V2 |: Bfrom sklearn import cross_validation
+ N. N( ?9 O4 ?1 s$ S% Qfrom sklearn.svm import SVC# K: X1 H, W4 w+ |
5 D: F, D4 p% \9 T0 s7 t! U( m& `
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.25, random_state=5)
6 E, t5 g7 S; ]1 V/ N" G2 D
- K7 V" l3 \6 b' ^0 N#params = {'kernel': 'linear'}1 [, Q/ S. _$ o- v4 {" D* ]
#params = {'kernel': 'poly', 'degree': 3}
0 ?; R& z2 @3 E$ Iparams = {'kernel': 'rbf'}. I* Z7 @- n/ z. H$ ^
classifier = SVC(**params)
9 q( D7 Z+ Q8 q: @# f( [classifier.fit(X_train, y_train): `% `) i( J$ b* ^1 j8 c' v
utilities.plot_classifier(classifier, X_train, y_train, 'Training dataset')
# T9 l! n8 `5 m9 c( W( Q0 y$ y- p6 ^" `/ M- t) u8 n& E ^9 R. c
y_test_pred = classifier.predict(X_test)
9 x& m$ G, q) t5 L& }/ }utilities.plot_classifier(classifier, X_test, y_test, 'Test dataset')- L; W. S4 @' Z: c' ~* A+ m
: D+ O( P. {! ^9 I
###############################################
3 J: \. W# M# R3 z5 @! _# Evaluate classifier performance [, E& c2 m# M" l D
) N- ~2 y& J/ M
from sklearn.metrics import classification_report
: H7 g9 g1 z: I4 P
. o5 W0 W" h' H4 j* Itarget_names = ['Class-' + str(int(i)) for i in set(y)]( {2 L! ?, F' z3 ?. B8 y
print "\n" + "#"*309 S3 @0 b. n. g8 ~9 J5 J4 q2 ?, T/ Q
print "\nClassifier performance on training dataset\n"
2 _/ K' W! C& M/ d" [ Rprint classification_report(y_train, classifier.predict(X_train), target_names=target_names)" B( N! o6 A4 N3 m' M3 n3 z
print "#"*30 + "\n"9 R8 w' l+ t" y4 P6 o
5 w3 R" A) B7 A
print "#"*30
( ^# h4 v; a. w" xprint "\nClassification report on test dataset\n"4 g" Y1 J2 T4 z% H
print classification_report(y_test, y_test_pred, target_names=target_names)
; v1 C" B' q- n; sprint "#"*30 + "\n"; F# f, Z* W; u8 s. K& F/ y0 b& g2 b
- E, [+ }0 z0 r- e! ^; l% f2 g8 w |
|