-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpractice16.py
More file actions
77 lines (58 loc) · 2.33 KB
/
practice16.py
File metadata and controls
77 lines (58 loc) · 2.33 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
# 整體學習:基本分類器投票機Bagging, AdaBoosting
# 隨機森林, 支持向量機(SVM)
import numpy
import pandas
from sklearn import cross_validation, ensemble
# This module will be removed in 0.20. (CV iterators)
from sklearn import svm, preprocessing, metrics
# 老師放雲端上的鐵達尼號 資料載入
url = "https://storage.googleapis.com/2017_ithome_ironman/data/kaggle_titanic_train.csv"
titanic = pandas.read_csv(url)
# 年齡的遺漏值填補平均年齡
age_median = numpy.nanmedian(titanic["Age"])
new_Age = numpy.where(titanic["Age"].isnull(), age_median, titanic["Age"])
titanic["Age"] = new_Age
# dummy variables 將性別轉為0, 1
label_encoder = preprocessing.LabelEncoder()
encoder_Sex = label_encoder.fit_transform(titanic["Sex"])
# 建立訓練與測試資料,用Pclass, Age, Sex 來預測 Survived
titanic_X = pandas.DataFrame([titanic["Pclass"],
encoder_Sex, titanic["Age"]]).T
titanic_y = titanic["Survived"]
train_X, test_X, train_y, test_y = cross_validation.train_test_split(
titanic_X, titanic_y, test_size=0.3)
# 建立Bagging
bag = ensemble.BaggingClassifier(n_estimators=100)
bag_fit = bag.fit(train_X, train_y)
test_y_predicted = bag.predict(test_X)
print(test_y_predicted)
accuracy = metrics.accuracy_score(test_y, test_y_predicted)
print(accuracy)
# 建立AdaBoosting
boost = ensemble.AdaBoostClassifier(n_estimators=100)
boost_fit = boost.fit(train_X, train_y)
test_y_Adapredicted = boost.predict(test_X)
print(test_y_Adapredicted)
accuracy = metrics.accuracy_score(test_y, test_y_Adapredicted)
print(accuracy)
# 建立Random Forest
forest = ensemble.RandomForestClassifier(n_estimators=100)
forest_fit = forest.fit(train_X, train_y)
test_y_f_predicted = forest.predict(test_X)
print(test_y_f_predicted)
accuracy = metrics.accuracy_score(test_y, test_y_f_predicted)
print(accuracy)
# 建立SVC
svc = svm.SVC()
svc_fit = svc.fit(train_X, train_y)
test_y_svc_predicted = svc.predict(test_X)
print(test_y_svc_predicted)
accuracy = metrics.accuracy_score(test_y, test_y_svc_predicted)
print(accuracy)
# 另外的AUC績效
fpr, tpr, thresholds = metrics.roc_curve(test_y, test_y_f_predicted)
auc = metrics.auc(fpr, tpr)
print("隨機森林模型的AUC績效:", auc)
fpr, tpr, thresholds = metrics.roc_curve(test_y, test_y_svc_predicted)
auc = metrics.auc(fpr, tpr)
print("支持向量機模型的AUC績效:", auc)