はじめに
このプロジェクトでは、クレジットカード保有者のリスク状況を予測するための機械学習分類モデルを構築する方法を学びます。このプロジェクトでは、データの前処理、サポートベクターマシン(SVM)モデルの学習、予測結果を CSV ファイルに保存する作業が行われます。
🎯 タスク
このプロジェクトでは、以下のことを学びます。
- 非数値特徴量に対してラベルエンコーディングを行うことでデータを準備する方法
- 学習データを使用して機械学習分類モデルを学習する方法
- 予測結果を CSV ファイルに保存する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- 機械学習タスク用にデータを前処理して準備する
- 分類用のサポートベクターマシン(SVM)モデルを学習する
- 予測結果を CSV ファイルに保存する
データの準備
このステップでは、CSV ファイルから学習データとテストデータを読み込み、非数値特徴量に対してラベルエンコーディングを行う方法を学びます。
コードエディタで
predict.pyファイルを開きます。getData()関数で、以下のタスクを完了します。pd.read_csv()を使用してcredit_risk_train.csvファイルから学習データを読み込みます。pd.read_csv()を使用してcredit_risk_test.csvファイルからテストデータを読み込みます。label()関数を呼び出して、学習データとテストデータの両方の非数値特徴量に対してラベルエンコーディングを行います。- 学習データを
x_train、y_train、x_test、およびy_testに分割します。
def getData():
"""
Read data from csv files. And split the train data into train and test for validation.
"""
## step1. read data from csv files
data = pd.read_csv(trainfile)
test = pd.read_csv(testfile)
## step2. label encoding
data = label(data)
test = label(test)
## step3. split train data into train and test
x_train, y_train = data.iloc[:, :-1].to_numpy(), data.iloc[:, -1].to_numpy()
x_test = test.iloc[:, :].to_numpy()
y_test = None
return x_train, y_train, x_test, y_test
label()関数で、ラベルエンコーディングプロセスの実装を完了します。- データの各列を反復処理します。
- 列のデータ型が
objectの場合、LabelEncoderインスタンスを作成して列データに適合させます。 - 列名が
"RISK"の場合、LabelEncoderインスタンスをconvertor変数に格納します。 LabelEncoderインスタンスを使用して列データを変換し、データ内の列を更新します。- 更新されたデータを返します。
def label(data):
"""
Use label encoding to process the non-numeric features.
"""
global convertor
for col in data.columns:
if data[col].dtype == "object":
le = LE()
if col == "RISK":
convertor = le
le.fit(data[col])
data[col] = le.transform(data[col])
return data
このステップを完了すると、次のステップに備えた学習データとテストデータができあがります。
モデルを学習する
このステップでは、学習データを使用して機械学習分類モデルを学習する方法を学びます。
predict()関数で、以下のタスクを完了します。sklearn.svmモジュールからSVCモデルのインスタンスを作成します。fit()メソッドを使用して、モデルをx_trainとy_trainデータに適合させます。
def predict(model=MODEL):
"""
Use the model to predict the result.
"""
## step1. get the model
predictor = model()
## step2. get the data
x_train, y_train, x_test, _ = getData()
## step3. train the model
predictor.fit(x_train, y_train)
## step4. predict and save
res = predictor.predict(x_test)
save(res)
このステップを完了すると、モデルが学習され、テストデータに対する予測を行う準備が整います。
予測結果を保存する
このステップでは、予測結果を credit_risk_pred.csv ファイルに保存する方法を学びます。
save()関数で、以下のタスクを完了します。convertor変数を使用して、予測結果を元のラベルに逆変換します。- 予測結果を含む Pandas の DataFrame を作成し、
pd.DataFrame().to_csv()を使用してcredit_risk_pred.csvファイルに保存します。
def save(result):
"""
Save the result to csv file.
"""
result = convertor.inverse_transform(result)
dataframe = pd.DataFrame({"RISK": result})
dataframe.to_csv("credit_risk_pred.csv", index=False, sep=",")
このステップを完了すると、予測結果が credit_risk_pred.csv ファイルに保存されます。
予測を実行する
この最後のステップでは、予測プロセスを実行して出力を確認します。
if __name__ == "__main__":ブロック内で、予測プロセスを実行するためにpredict()関数を呼び出します。- ターミナルで、以下のコマンドを使用して
predict.pyファイルを実行します。
python3 predict.py
predict.pyファイルを実行した後、以下の出力が表示されるはずです。
Predict done!
- プロジェクトディレクトリ内の
credit_risk_pred.csvファイルを確認します。そこには、テストデータの予測結果が含まれているはずです。
おめでとうございます!あなたはクレジットカード保有者のリスク予測プロジェクトを成功裏に完了しました。あなたは以下のことを学びました。
- 非数値特徴量に対してラベルエンコーディングを行うことでデータを準備する
- 学習データを使用して機械学習分類モデルを学習する
- 予測結果を CSV ファイルに保存する
まとめ
おめでとうございます!このプロジェクトを完了しました。あなたは実験技術を向上させるために、LabEx でさらに多くの実験を行うことができます。



