{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-31T14:43:50.662189Z","iopub.execute_input":"2022-07-31T14:43:50.662865Z","iopub.status.idle":"2022-07-31T14:43:50.702652Z","shell.execute_reply.started":"2022-07-31T14:43:50.662752Z","shell.execute_reply":"2022-07-31T14:43:50.701229Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport seaborn as sns\nimport matplotlib\n#print(matplotlib.__version__)\nimport sklearn\nimport pickle","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:50.704886Z","iopub.execute_input":"2022-07-31T14:43:50.705308Z","iopub.status.idle":"2022-07-31T14:43:52.313084Z","shell.execute_reply.started":"2022-07-31T14:43:50.705270Z","shell.execute_reply":"2022-07-31T14:43:52.311473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df=pd.read_csv(\"../input/spaceship-titanic/train.csv\")\ndf_test=pd.read_csv(\"../input/spaceship-titanic/test.csv\")\ndf.head()\n#df.info()\n#df.isnull().sum()","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:52.315064Z","iopub.execute_input":"2022-07-31T14:43:52.315584Z","iopub.status.idle":"2022-07-31T14:43:52.432999Z","shell.execute_reply.started":"2022-07-31T14:43:52.315543Z","shell.execute_reply":"2022-07-31T14:43:52.431717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 數值、類別型態資料前處理 #填補缺失值\nfrom sklearn.impute import SimpleImputer\n\n# 填補策略 = most_frequent\nimputer = SimpleImputer(strategy='most_frequent') # 創造 imputer 並設定填補策略\n#HomePlanet\nhome = df['HomePlanet'].to_numpy().reshape(-1, 1)\nimputer.fit(home) # 根據資料學習需要填補的值                      \ndf['HomePlanet'] = imputer.transform(home) # 填補缺失值\n#HomePlanet_t\nhome_t = df_test['HomePlanet'].to_numpy().reshape(-1, 1)\nimputer.fit(home_t)                       \ndf_test['HomePlanet'] = imputer.transform(home_t) \n#CryoSleep\ncryo = df['CryoSleep'].to_numpy().reshape(-1, 1)\nimputer.fit(cryo)                             \ndf['CryoSleep'] = imputer.transform(cryo)\n#CryoSleep_t\ncryo_t = df_test['CryoSleep'].to_numpy().reshape(-1, 1)\nimputer.fit(cryo_t)                             \ndf_test['CryoSleep'] = imputer.transform(cryo_t)\n#Destination\ndest = df['Destination'].to_numpy().reshape(-1, 1)\nimputer.fit(dest)                     \ndf['Destination'] = imputer.transform(dest) \n#Destination_t\ndest_t = df_test['Destination'].to_numpy().reshape(-1, 1)\nimputer.fit(dest_t)                     \ndf_test['Destination'] = imputer.transform(dest_t)\n#VIP\nvip = df['VIP'].to_numpy().reshape(-1, 1)\nimputer.fit(vip)                         \ndf['VIP'] = imputer.transform(vip)\n#VIP_t\nvip_t = df_test['VIP'].to_numpy().reshape(-1, 1)\nimputer.fit(vip_t)                         \ndf_test['VIP'] = imputer.transform(vip_t)\n\n# 填補策略 = mean\nimputer = SimpleImputer(strategy='mean')\n#Age\nage = df['Age'].to_numpy().reshape(-1, 1)\nimputer.fit(age)                          \ndf['Age'] = imputer.transform(age)\n#Age_t\nage_t = df_test['Age'].to_numpy().reshape(-1, 1)\nimputer.fit(age_t)                          \ndf_test['Age'] = imputer.transform(age_t)\n#RoomService\nroom = df['RoomService'].to_numpy().reshape(-1, 1)\nimputer.fit(room)                         \ndf['RoomService'] = imputer.transform(room)\n#RoomService_t\nroom_t = df_test['RoomService'].to_numpy().reshape(-1, 1)\nimputer.fit(room_t)                         \ndf_test['RoomService'] = imputer.transform(room_t)\n#FoodCourt\nfood = df['FoodCourt'].to_numpy().reshape(-1, 1)\nimputer.fit(food)                         \ndf['FoodCourt'] = imputer.transform(food)\n#FoodCourt_t\nfood_t = df_test['FoodCourt'].to_numpy().reshape(-1, 1)\nimputer.fit(food_t)                         \ndf_test['FoodCourt'] = imputer.transform(food_t)\n#ShoppingMall\nshop = df['ShoppingMall'].to_numpy().reshape(-1, 1)\nimputer.fit(shop)                         \ndf['ShoppingMall'] = imputer.transform(shop)\n#ShoppingMall_t\nshop_t = df_test['ShoppingMall'].to_numpy().reshape(-1, 1)\nimputer.fit(shop_t)                         \ndf_test['ShoppingMall'] = imputer.transform(shop_t)\n#Spa\nSpa = df['Spa'].to_numpy().reshape(-1, 1)\nimputer.fit(Spa)                         \ndf['Spa'] = imputer.transform(Spa)\n#Spa_t\nSpa_t = df_test['Spa'].to_numpy().reshape(-1, 1)\nimputer.fit(Spa_t)                         \ndf_test['Spa'] = imputer.transform(Spa_t)\n#VRDeck\nVR = df['VRDeck'].to_numpy().reshape(-1, 1)\nimputer.fit(VR)                         \ndf['VRDeck'] = imputer.transform(VR)\n#VRDeck_t\nVR_t = df_test['VRDeck'].to_numpy().reshape(-1, 1)\nimputer.fit(VR_t)                         \ndf_test['VRDeck'] = imputer.transform(VR_t)\n\n#df.isnull().sum()\n#df_test.isnull().sum()\n#df.describe()","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:52.436650Z","iopub.execute_input":"2022-07-31T14:43:52.437506Z","iopub.status.idle":"2022-07-31T14:43:52.786860Z","shell.execute_reply.started":"2022-07-31T14:43:52.437452Z","shell.execute_reply":"2022-07-31T14:43:52.785262Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 類別型態資料前處理 # 轉換類別為數值 \nfrom sklearn.preprocessing import LabelEncoder\n\n#HomePlanet\nH = LabelEncoder() # 創造 Label Encoder\nH.fit(df['HomePlanet']) # 給予每個類別一個數值\ndf['HomePlanet'] = H.transform(df['HomePlanet']) # 轉換所有類別成為數值 \n#CryoSleep\ncryo = LabelEncoder()\ncryo.fit(df['CryoSleep'])\ndf['CryoSleep'] = cryo.transform(df['CryoSleep'])  \n#Destination\nD = LabelEncoder() \nD.fit(df['Destination']) \ndf['Destination'] = D.transform(df['Destination'])\n#VIP\nvip = LabelEncoder() \nvip.fit(df['VIP']) \ndf['VIP'] = vip.transform(df['VIP']) \n#Transported \nT = LabelEncoder()\nT.fit(df['Transported'])\ndf['Transported'] = T.transform(df['Transported']) \n\n#HomePlanet_t\nH = LabelEncoder() \nH.fit(df_test['HomePlanet']) \ndf_test['HomePlanet'] = H.transform(df_test['HomePlanet']) \n#CryoSleep_t\ncryo = LabelEncoder()\ncryo.fit(df_test['CryoSleep'])\ndf_test['CryoSleep'] = cryo.transform(df_test['CryoSleep'])  \n#Destination_t\nD = LabelEncoder() \nD.fit(df_test['Destination']) \ndf_test['Destination'] = D.transform(df_test['Destination'])\n#VIP_t\nvip = LabelEncoder() \nvip.fit(df_test['VIP']) \ndf_test['VIP'] = vip.transform(df_test['VIP'])\n\n#df.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:52.788698Z","iopub.execute_input":"2022-07-31T14:43:52.789200Z","iopub.status.idle":"2022-07-31T14:43:52.829520Z","shell.execute_reply.started":"2022-07-31T14:43:52.789151Z","shell.execute_reply":"2022-07-31T14:43:52.828432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 類別型態資料前處理 # 類別型態資料轉換為 one-hot 型式\nfrom sklearn.preprocessing import OneHotEncoder\n\n#HomePlanet\nreshaped_data = np.expand_dims(df['HomePlanet'], axis=1)\nonehot_enc = OneHotEncoder()\ntransformed = onehot_enc.fit_transform(reshaped_data).toarray()\ndf=pd.get_dummies(df,columns=['HomePlanet']) # 擴增欄位\n#Destination\nreshaped_data = np.expand_dims(df['Destination'], axis=1)\nonehot_enc = OneHotEncoder()\ntransformed = onehot_enc.fit_transform(reshaped_data).toarray()\ndf=pd.get_dummies(df,columns=['Destination'])\n\n#HomePlanet_t\nreshaped_data = np.expand_dims(df_test['HomePlanet'], axis=1)\nonehot_enc = OneHotEncoder()\ntransformed = onehot_enc.fit_transform(reshaped_data).toarray()\ndf_test=pd.get_dummies(df_test,columns=['HomePlanet']) \n#Destination_t\nreshaped_data = np.expand_dims(df_test['Destination'], axis=1)\nonehot_enc = OneHotEncoder()\ntransformed = onehot_enc.fit_transform(reshaped_data).toarray()\ndf_test=pd.get_dummies(df_test,columns=['Destination'])\n#print(transformed)\ndf.head() ","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:52.831673Z","iopub.execute_input":"2022-07-31T14:43:52.832676Z","iopub.status.idle":"2022-07-31T14:43:52.909526Z","shell.execute_reply.started":"2022-07-31T14:43:52.832621Z","shell.execute_reply":"2022-07-31T14:43:52.908176Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Heatmap\nfig, ax = plt.subplots(figsize=(10, 10))           \nsns.heatmap(\n    # 輸入資料給熱點圖，自動計算相關係數\n    df.corr(),                      \n    # 顯示每個格子所代表的數字\n    annot=True,                \n    # 將格子形狀調整為正方形\n    square=True,                        \n    # 選擇畫圖的 Axes\n    ax=ax\n)                   \nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:52.911297Z","iopub.execute_input":"2022-07-31T14:43:52.912835Z","iopub.status.idle":"2022-07-31T14:43:54.585000Z","shell.execute_reply.started":"2022-07-31T14:43:52.912719Z","shell.execute_reply":"2022-07-31T14:43:54.583717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 取出訓練資料需要分析的資料欄位 \n# x1\n#x = df[['HomePlanet_0','HomePlanet_1','HomePlanet_2','CryoSleep','Destination_0','Destination_1','Destination_2','Age','VIP']] \n# x2\nx=df[['CryoSleep','HomePlanet_1','Destination_0','VRDeck','Spa','RoomService']]\n# x3\n#x = df[['HomePlanet_0','HomePlanet_1','HomePlanet_2','CryoSleep','Destination_0','Destination_1','Destination_2','Age','VIP','RoomService','FoodCourt','ShoppingMall','Spa','VRDeck']] \n\ny = df['Transported'] # 取出訓練資料的答案\n#x.describe()\n#x.info()","metadata":{"_kg_hide-input":false,"execution":{"iopub.status.busy":"2022-07-31T14:43:54.587638Z","iopub.execute_input":"2022-07-31T14:43:54.588263Z","iopub.status.idle":"2022-07-31T14:43:54.601720Z","shell.execute_reply.started":"2022-07-31T14:43:54.588210Z","shell.execute_reply":"2022-07-31T14:43:54.600301Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#CryoSleep Hist\nfig, ax = plt.subplots(figsize=(4, 6)) \nplt.hist(df['CryoSleep'])\nplt.title('CryoSleep')\nplt.show()  ","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:54.603630Z","iopub.execute_input":"2022-07-31T14:43:54.604306Z","iopub.status.idle":"2022-07-31T14:43:54.851882Z","shell.execute_reply.started":"2022-07-31T14:43:54.604253Z","shell.execute_reply":"2022-07-31T14:43:54.850316Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#VIP Hist\nfig, ax = plt.subplots(figsize=(4, 6)) \nplt.hist(df['VIP'])\nplt.title('VIP')\nplt.show()  ","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:54.857377Z","iopub.execute_input":"2022-07-31T14:43:54.857827Z","iopub.status.idle":"2022-07-31T14:43:55.106400Z","shell.execute_reply.started":"2022-07-31T14:43:54.857791Z","shell.execute_reply":"2022-07-31T14:43:55.104680Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Age Hist\nfig, ax = plt.subplots(figsize=(10, 7)) \nplt.hist(df['Age'])\nplt.title('Age')\nplt.show()  ","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:55.109249Z","iopub.execute_input":"2022-07-31T14:43:55.110631Z","iopub.status.idle":"2022-07-31T14:43:55.361385Z","shell.execute_reply.started":"2022-07-31T14:43:55.110575Z","shell.execute_reply":"2022-07-31T14:43:55.360307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 資料imbalance的處理 # SMOTE\nfrom collections import Counter\nfrom sklearn.datasets import make_classification\nfrom imblearn.over_sampling import RandomOverSampler\nfrom imblearn.over_sampling import SMOTE\nx_,y_=SMOTE(random_state=999).fit_resample(x,y)\n#print(x.info())\n#print(x_.info())","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:55.363270Z","iopub.execute_input":"2022-07-31T14:43:55.364180Z","iopub.status.idle":"2022-07-31T14:43:55.804380Z","shell.execute_reply.started":"2022-07-31T14:43:55.364128Z","shell.execute_reply":"2022-07-31T14:43:55.802783Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import model\nfrom sklearn.tree import DecisionTreeClassifier \nfrom sklearn.metrics import accuracy_score\nfrom sklearn.tree import plot_tree \nfrom sklearn.model_selection import KFold             \nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.metrics import f1_score  \nfrom sklearn.svm import SVC  \nfrom sklearn.ensemble import RandomForestClassifier              \nfrom sklearn.linear_model import LogisticRegression \n\n# 交叉驗證設定 K 值\nkf = KFold(\n    n_splits=5,                                \n    random_state=999,\n    shuffle=True\n)\nkf.get_n_splits(x_) # 查看資料被分成幾組                            \ntrain_acc_list = [] # 儲存每次訓練模型的準確度                                  \nvalid_acc_list = [] # 儲存每次驗證模型的準確度","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:55.806306Z","iopub.execute_input":"2022-07-31T14:43:55.807402Z","iopub.status.idle":"2022-07-31T14:43:55.819273Z","shell.execute_reply.started":"2022-07-31T14:43:55.807311Z","shell.execute_reply":"2022-07-31T14:43:55.817671Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# DecisionTreeClassifier\nprint('DecisionTreeClassifier Model')\nprint()\n# 創造決策樹模型\n# 設定最佳化方法為 Gini Index\n# 設定最大深度\n# 設定最多葉子個數\nmodel = DecisionTreeClassifier(                 \n    criterion='gini',                           \n    max_depth=12,                                \n    max_leaf_nodes=2 ** 12\n)                \nmodel.fit(x_,y_) # 訓練決策樹模型                 \npred_y = model.predict(x_) # 確認模型是否訓練成功     \nacc = accuracy_score(y_, pred_y) # 計算準確度  \nf1 = f1_score(y_, pred_y)\nprint('accuracy: {}\\n'.format(acc)+'f1 score: {}\\n'.format(f1))\n\nfig, ax = plt.subplots(figsize=(10, 10)) # 畫決策樹圖\nplot_tree(model, ax=ax)                  \nplt.show()  \n\n# 交叉驗證                                        \nfor train_index, valid_index in kf.split(x_):  # 每個迴圈都會產生不同部份的資料  \n    train_x_split = x_.iloc[train_index] # 產生訓練資料         \n    train_y_split = y_.iloc[train_index] # 產生訓練資料標籤        \n    valid_x_split =x_.iloc[valid_index] # 產生驗證資料        \n    valid_y_split =y_.iloc[valid_index] # 產生驗證資料標籤       \n    model = DecisionTreeClassifier(random_state=999) # 創造決策樹模型\n    model.fit(train_x_split, train_y_split) # 訓練決策樹模型          \n    train_pred_y = model.predict(train_x_split) # 確認模型是否訓練成功       \n    train_acc = accuracy_score(    # 計算訓練資料準確度\n        train_y_split,         \n        train_pred_y\n    )\n    valid_pred_y = model.predict(valid_x_split) # 驗證模型是否訓練成功      \n    valid_acc = accuracy_score(  # 計算驗證資料準確度\n        valid_y_split,         \n        valid_pred_y\n    )\n    train_acc_list.append(train_acc)\n    valid_acc_list.append(valid_acc)\n    \nprint((                                 # 輸出平均訓練準確度、最低訓練準確度、最高訓練準確度\n    'average train accuracy: {}\\n' +\n    'min train accuracy: {}\\n' +\n    'max train accuracy: {}').format(\n    np.mean(train_acc_list),                          \n    np.min(train_acc_list),                           \n    np.max(train_acc_list)                            \n))\nprint()\n\nprint((                                 # 輸出平均驗證準確度、最低驗證準確度、最高驗證準確度\n    'average valid accuracy: {}\\n' +\n    'min valid accuracy: {}\\n' +\n    'max valid accuracy: {}').format(\n    np.mean(valid_acc_list),                          \n    np.min(valid_acc_list),                           \n    np.max(valid_acc_list)                            \n))","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:43:55.821519Z","iopub.execute_input":"2022-07-31T14:43:55.821969Z","iopub.status.idle":"2022-07-31T14:44:37.532325Z","shell.execute_reply.started":"2022-07-31T14:43:55.821932Z","shell.execute_reply":"2022-07-31T14:44:37.530473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#KNN\nprint('DecisionTreeClassifier Model')\nprint()\nmodel = KNeighborsClassifier(n_neighbors=3) # 創造近鄰演算法模型\nmodel.fit(x_,y_) # 訓練近鄰演算法模型\npred_y = model.predict(x_)                  \nacc = accuracy_score(y_, pred_y)     \nf1 = f1_score(y_, pred_y)   \nprint('accuracy: {}\\n'.format(acc)+'f1 score: {}\\n'.format(f1))\n\n#交叉驗證\nfor train_index, valid_index in kf.split(x_):  \n    train_x_split = x_.iloc[train_index]        \n    train_y_split = y_.iloc[train_index]     \n    valid_x_split =x_.iloc[valid_index]       \n    valid_y_split =y_.iloc[valid_index]        \n    model = KNeighborsClassifier(n_neighbors=3)\n    model.fit(train_x_split, train_y_split)           \n    train_pred_y = model.predict(train_x_split)      \n    train_acc = accuracy_score(   \n        train_y_split,         \n        train_pred_y\n    )\n    valid_pred_y = model.predict(valid_x_split)      \n    valid_acc = accuracy_score(\n        valid_y_split,         \n        valid_pred_y\n    )\n    train_acc_list.append(train_acc)\n    valid_acc_list.append(valid_acc)\n\nprint((\n    'average train accuracy: {}\\n' +\n    'min train accuracy: {}\\n' +\n    'max train accuracy: {}').format(\n    np.mean(train_acc_list),                          \n    np.min(train_acc_list),                           \n    np.max(train_acc_list)                            \n))\nprint()\n\nprint((\n    'average valid accuracy: {}\\n' +\n    'min valid accuracy: {}\\n' +\n    'max valid accuracy: {}').format(\n    np.mean(valid_acc_list),                          \n    np.min(valid_acc_list),                           \n    np.max(valid_acc_list)                            \n))","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:44:37.535162Z","iopub.execute_input":"2022-07-31T14:44:37.535833Z","iopub.status.idle":"2022-07-31T14:44:39.989171Z","shell.execute_reply.started":"2022-07-31T14:44:37.535779Z","shell.execute_reply":"2022-07-31T14:44:39.987690Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#SVC                \nprint('SVC')\nprint()\nmodel = SVC(random_state=999)  # 創造支援向量機模型                  \nmodel.fit(x_, y_)  # 訓練支援向量機模型                     \npred_y = model.predict(x_)                \nacc = accuracy_score(y_, pred_y)  \nf1 = f1_score(y_, pred_y)        \nprint('accuracy: {}\\n'.format(acc)+'f1 score: {}\\n'.format(f1))\n\n#交叉驗證\nfor train_index, valid_index in kf.split(x_):  \n    train_x_split = x_.iloc[train_index]        \n    train_y_split = y_.iloc[train_index]     \n    valid_x_split =x_.iloc[valid_index]       \n    valid_y_split =y_.iloc[valid_index]        \n    model = SVC(random_state=999)\n    model.fit(train_x_split, train_y_split)           \n    train_pred_y = model.predict(train_x_split)      \n    train_acc = accuracy_score(   \n        train_y_split,         \n        train_pred_y\n    )\n    valid_pred_y = model.predict(valid_x_split)      \n    valid_acc = accuracy_score(\n        valid_y_split,         \n        valid_pred_y\n    )\n    train_acc_list.append(train_acc)\n    valid_acc_list.append(valid_acc)\n\nprint((\n    'average train accuracy: {}\\n' +\n    'min train accuracy: {}\\n' +\n    'max train accuracy: {}').format(\n    np.mean(train_acc_list),                          \n    np.min(train_acc_list),                           \n    np.max(train_acc_list)                            \n))\nprint()\n\nprint((\n    'average valid accuracy: {}\\n' +\n    'min valid accuracy: {}\\n' +\n    'max valid accuracy: {}').format(\n    np.mean(valid_acc_list),                          \n    np.min(valid_acc_list),                           \n    np.max(valid_acc_list)                            \n))","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:44:39.991019Z","iopub.execute_input":"2022-07-31T14:44:39.991890Z","iopub.status.idle":"2022-07-31T14:45:04.654305Z","shell.execute_reply.started":"2022-07-31T14:44:39.991723Z","shell.execute_reply":"2022-07-31T14:45:04.652204Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#RandomForestClassifier   \nprint('RandomForestClassifier')\nprint()\nmodel = RandomForestClassifier(n_estimators=100, max_depth=12) # 創造Random Forest模型                   \nmodel.fit(x_, y_) # 訓練Random Forest模型                      \npred_y = model.predict(x_)                  \nacc = accuracy_score(y_, pred_y) \nf1 = f1_score(y_, pred_y)        \nprint('accuracy: {}\\n'.format(acc)+'f1 score: {}\\n'.format(f1)) \n\n#交叉驗證\nfor train_index, valid_index in kf.split(x_):  \n    train_x_split = x_.iloc[train_index]        \n    train_y_split = y_.iloc[train_index]     \n    valid_x_split =x_.iloc[valid_index]       \n    valid_y_split =y_.iloc[valid_index]        \n    model = RandomForestClassifier(n_estimators=100, max_depth=4) \n    model.fit(train_x_split, train_y_split)           \n    train_pred_y = model.predict(train_x_split)      \n    train_acc = accuracy_score(   \n        train_y_split,         \n        train_pred_y\n    )\n    valid_pred_y = model.predict(valid_x_split)      \n    valid_acc = accuracy_score(\n        valid_y_split,         \n        valid_pred_y\n    )\n    train_acc_list.append(train_acc)\n    valid_acc_list.append(valid_acc)\n\nprint((\n    'average train accuracy: {}\\n' +\n    'min train accuracy: {}\\n' +\n    'max train accuracy: {}').format(\n    np.mean(train_acc_list),                          \n    np.min(train_acc_list),                           \n    np.max(train_acc_list)                            \n))\nprint()\n\nprint((\n    'average valid accuracy: {}\\n' +\n    'min valid accuracy: {}\\n' +\n    'max valid accuracy: {}').format(\n    np.mean(valid_acc_list),                          \n    np.min(valid_acc_list),                           \n    np.max(valid_acc_list)                            \n))","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:45:04.656023Z","iopub.execute_input":"2022-07-31T14:45:04.657237Z","iopub.status.idle":"2022-07-31T14:45:08.081034Z","shell.execute_reply.started":"2022-07-31T14:45:04.657190Z","shell.execute_reply":"2022-07-31T14:45:08.079541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#LogisticRegression                \nprint('LogisticRegression')\nprint()\nmodel = LogisticRegression(random_state=999) # 創造羅吉斯回歸模型                  \nmodel.fit(x_, y_) # 訓練羅吉斯回歸模型                      \npred_y = model.predict(x_)                  \nacc = accuracy_score(y_, pred_y) \nf1 = f1_score(y_, pred_y)        \nprint('accuracy: {}\\n'.format(acc)+'f1 score: {}\\n'.format(f1)) \n\n#交叉驗證\nfor train_index, valid_index in kf.split(x_):  \n    train_x_split = x_.iloc[train_index]        \n    train_y_split = y_.iloc[train_index]     \n    valid_x_split =x_.iloc[valid_index]       \n    valid_y_split =y_.iloc[valid_index]        \n    model = LogisticRegression(random_state=999) \n    model.fit(train_x_split, train_y_split)           \n    train_pred_y = model.predict(train_x_split)      \n    train_acc = accuracy_score(   \n        train_y_split,         \n        train_pred_y\n    )\n    valid_pred_y = model.predict(valid_x_split)      \n    valid_acc = accuracy_score(\n        valid_y_split,         \n        valid_pred_y\n    )\n    train_acc_list.append(train_acc)\n    valid_acc_list.append(valid_acc)\n\nprint((\n    'average train accuracy: {}\\n' +\n    'min train accuracy: {}\\n' +\n    'max train accuracy: {}').format(\n    np.mean(train_acc_list),                          \n    np.min(train_acc_list),                           \n    np.max(train_acc_list)                            \n))\nprint()\n\nprint((\n    'average valid accuracy: {}\\n' +\n    'min valid accuracy: {}\\n' +\n    'max valid accuracy: {}').format(\n    np.mean(valid_acc_list),                          \n    np.min(valid_acc_list),                           \n    np.max(valid_acc_list)                            \n))","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:45:08.082555Z","iopub.execute_input":"2022-07-31T14:45:08.082967Z","iopub.status.idle":"2022-07-31T14:45:09.093749Z","shell.execute_reply.started":"2022-07-31T14:45:08.082934Z","shell.execute_reply":"2022-07-31T14:45:09.092221Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#testing_1_x1_LogisticRegression # kaggle score 0.71779\n\n#features = ['HomePlanet_0','HomePlanet_1','HomePlanet_2','CryoSleep','Destination_0','Destination_1','Destination_2','Age','VIP']\n#X_test = pd.get_dummies(df_test[features])\n#model = LogisticRegression(random_state=999) # 創造羅吉斯回歸模型                  \n#model.fit(x_, y_) # 訓練羅吉斯回歸模型 \n#predictions = model.predict(X_test)    \n#output = pd.DataFrame({'PassengerId': df_test. PassengerId, 'Transported': predictions.astype(bool)})\n#output.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:45:09.096181Z","iopub.execute_input":"2022-07-31T14:45:09.097226Z","iopub.status.idle":"2022-07-31T14:45:09.104924Z","shell.execute_reply.started":"2022-07-31T14:45:09.097160Z","shell.execute_reply":"2022-07-31T14:45:09.103215Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#testing_2_x2_LogisticRegression # kaggle score 0.57914\n\n#features = ['CryoSleep','HomePlanet_1','Destination_0','VRDeck','Spa','RoomService']\n#X_test = pd.get_dummies(df_test[features])\n#model = DecisionTreeClassifier(criterion='gini',max_depth=12,max_leaf_nodes=2 ** 12)                \n#model.fit(x_,y_) # 訓練決策樹模型    \n#predictions = model.predict(X_test)    \n#output = pd.DataFrame({'PassengerId': df_test. PassengerId, 'Transported': predictions.astype(bool)})\n#output.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:45:09.107054Z","iopub.execute_input":"2022-07-31T14:45:09.107824Z","iopub.status.idle":"2022-07-31T14:45:09.122747Z","shell.execute_reply.started":"2022-07-31T14:45:09.107763Z","shell.execute_reply":"2022-07-31T14:45:09.121242Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#testing_3_x3_LogisticRegression # kaggle score 0.78910\n\n#features = ['HomePlanet_0','HomePlanet_1','HomePlanet_2','CryoSleep','Destination_0','Destination_1','Destination_2','Age','VIP','RoomService','FoodCourt','ShoppingMall','Spa','VRDeck']\n#X_test = pd.get_dummies(df_test[features])\n#model = LogisticRegression(random_state=999) # 創造羅吉斯回歸模型                  \n#model.fit(x_, y_) # 訓練羅吉斯回歸模型 \n#predictions = model.predict(X_test)    \n#output = pd.DataFrame({'PassengerId': df_test. PassengerId, 'Transported': predictions.astype(bool)})\n#output.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:45:09.124583Z","iopub.execute_input":"2022-07-31T14:45:09.125254Z","iopub.status.idle":"2022-07-31T14:45:09.140447Z","shell.execute_reply.started":"2022-07-31T14:45:09.125195Z","shell.execute_reply":"2022-07-31T14:45:09.138622Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#testing_4_x3_RandomForestClassifier # kaggle score 0.78957\n\n#features = ['HomePlanet_0','HomePlanet_1','HomePlanet_2','CryoSleep','Destination_0','Destination_1','Destination_2','Age','VIP','RoomService','FoodCourt','ShoppingMall','Spa','VRDeck']\n#X_test = pd.get_dummies(df_test[features])\n#model = RandomForestClassifier(n_estimators=100, max_depth=12) # 創造Random Forest模型                   \n#model.fit(x_, y_) # 訓練Random Forest模型     \n#predictions = model.predict(X_test)    \n#output = pd.DataFrame({'PassengerId': df_test. PassengerId, 'Transported': predictions.astype(bool)})\n#output.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:45:09.142487Z","iopub.execute_input":"2022-07-31T14:45:09.143282Z","iopub.status.idle":"2022-07-31T14:45:09.153002Z","shell.execute_reply.started":"2022-07-31T14:45:09.143219Z","shell.execute_reply":"2022-07-31T14:45:09.151505Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#testing_5_x3_SVC # kaggle score 0.78933\n\n#features = ['HomePlanet_0','HomePlanet_1','HomePlanet_2','CryoSleep','Destination_0','Destination_1','Destination_2','Age','VIP','RoomService','FoodCourt','ShoppingMall','Spa','VRDeck']\n#X_test = pd.get_dummies(df_test[features])\n#model = SVC(random_state=999)  # 創造支援向量機模型                  \n#model.fit(x_, y_)  # 訓練支援向量機模型    \n#predictions = model.predict(X_test)    \n#output = pd.DataFrame({'PassengerId': df_test. PassengerId, 'Transported': predictions.astype(bool)})\n#output.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-31T14:45:09.155324Z","iopub.execute_input":"2022-07-31T14:45:09.156909Z","iopub.status.idle":"2022-07-31T14:45:09.173566Z","shell.execute_reply.started":"2022-07-31T14:45:09.156835Z","shell.execute_reply":"2022-07-31T14:45:09.171955Z"},"trusted":true},"execution_count":null,"outputs":[]}]}