Q3-1【どのタイプの機械学習?】
1: 教師あり学習(分類),2:教師あり学習(回帰),3: 教師なし学習(クラスタリング),4:教師なし学習(次元削減),5:機械学習で解くべき問題ではない
Q3-2【迷惑メールをみつけよう】
【データの説明】 ・各行が1通のメールに対応し,そのメールから観測された特徴量と正解データを含んでいる ・特徴量は,以下の通り. - (0~53列) 列名にある単語(または文字)がそのメール中の単語(または文字)に占める割合 - (54~56列) メール中で連続する大文字の平均長,最大長,合計長 ・正解データ(ラベル)は57列. 1 (迷惑メール), 0 (迷惑メールではない)
################### ライブラリのインポート ######################### #いつものPandasとNumPyをインポート import pandas as pd import numpy as np #日本語化MatplotLib import matplotlib.pyplot as plt !pip install japanize-matplotlib import japanize_matplotlib # Seabornをインポート import seaborn as sns # Pickleをインポート import pickle
########################### データの取得 ############################ #迷惑メールデータの取得 spam_data = pd.############################################# ############################## 前処理 ################################ #特徴量に指定する列名リスト.データの列名の0~56をスライスで取得 features = spam_data.columns[##:##] #正解データに指定する列名.データの列名の最後のものをスライスで取得 target = spam_data.columns[##:##] #特徴量 X = spam_data[features] #正解データ y = spam_data[target] #X, yのそれぞれを訓練データとテストデータに分ける (訓練:テスト=60:40) from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(####, ####, #################, random_state=1234)
###################### モデルの選択と学習 ############################# #モデルの選択 from sklearn import tree model = tree.DecisionTreeClassifier(max_depth=####, random_state=1234) #モデルの学習(訓練データを使う) model.#####(#######, ########) #モデルの表示(オプショナル) tree.#############(model, feature_names=############) plt.show()
########################### モデルの評価 ############################### #分類精度 acc = model.score(#######, #######) print(f"分類精度: {acc}") #実際にあっているかどうかを確認してみる (オプショナル) y_eval = pd.DataFrame() y_eval["正解"] = y_test[target[0]] y_eval["予測"] = model.#########(#######) y_eval["結果"] = (y_eval["正解"] == y_eval["予測"]) print(y_eval) #混同行列を表示する (オプショナル) from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay cm = confusion_matrix(#########, model.##########(########)) disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=model.classes_) disp.plot()
Q3-3【不動産価格を推定しよう】
【データの説明】 ・台湾・新北市の不動産に関するデータセット ・各行が1つの不動産物件に対応し,その物件の特徴量と正解データ(不動産価格)を含んでいる 【データ項目】 0: No: 物件の番号 1: 取引日:年.月日オフセット(1/1を0.0, 12/31を1.0とした,月日の相対値) 2: 築年数: 物件の築年数 3: 駅距離:最寄りの地下鉄駅までの距離(メートル) 4: コンビニ数:徒歩圏内にあるコンビニの数 5: 緯度:物件の場所の緯度 6: 経度:物件の場所の経度 7: 坪単価:物件の1坪(3.3平米)当たりの不動産価格(1万台湾ドル) 【正解データ】
Q3-4【モデルをチューニングしてみよう】