ゼロベース入門データマイニング-中古車取引価格予測Task 1


データ背景
https://tianchi.aliyun.com/competition/entrance/231784/informationゼロベース入門データマイニング-中古車取引価格予測
試合問題の分析
今回の試合問題は実質的に1回の回帰分析であり、データマイニングの常用ライブラリまたはフレームワークを用いてcatboostを行うことができる:分類変数指標を与えることができ、さらに独熱によって最も大量に独熱符号化形式の結果lbgを得ることができる:CatBoostと類似し、LighGBMも特徴名の入力を用いて属性データを処理することができる.データを独熱符号化していないため、速度は独熱符号化よりもずっと速い.LGBMは,属性特性の分割値を決定するために特別なアルゴリズムを用いた.xgb:CatBoostやLGBMアルゴリズムとは異なり,XGBBoost自体は分類変数を扱うことができず,ランダムな森のように数値データのみを受け取る.従って、分類データをXGBoostに転送する前に、タグ符号化、平均符号化、または独熱符号化などの様々な符号化方式によってデータを処理しなければならない.データ処理:pandas、numpyデータ可視化:matplotlib、seabornマシン/深さ学習:sklearn、keras探索性分析
評価指標
今回の予測は実質的に一次回帰分析であり,回帰評価指標は一般的にMSE,RMSE,MAE,MAPEである.今回はMAE,すなわち平均絶対誤差を用い,この値が小さいほどよい.M A E = ∑ i = 1 n ∣ y i − y ^ i ∣ n MAE =\frac{\sum^n_{i=1}|y_i -\hat{y}_i|}{n}MAE=nΣi=1 n∣yi−y^i∣そのうちy i y_i~yiはi~i~i番目のサンプルの真の値を表し、y^ihat{y}i~y^iは、i~i番目のサンプルの予測値を表す.詳細:https://blog.csdn.net/qq_42257962/article/details/108265730
分類アルゴリズムの一般的な評価指標2種類の分類器:accuracy、[precision,Recall,F-score,Pr曲線]、ROC-AUC曲線多種類分類器:accuracy、[マクロ平均と微平均,F-score]詳細参照:https://blog.csdn.net/qq_29168809/article/details/102993081
コードの例
1、データ読み込み
import pandas as pd
import numpy as np

data_train = pd.read_csv('used_car_train_20200313.csv', sep=' ')
data_test_a = pd.read_csv('used_car_testA_20200313.csv', sep=' ')
data_test_b = pd.read_csv('used_car_testB_20200421.csv', sep=' ')

2、データ情報の表示
data_train.head(10)  #    10 
data_train.shape  #       
data_train.info() #        、     
data_train.describe() #          、  、        

これらのコマンドにより、データの概要、特に値が欠落していることがわかります.
3、分類指標評価計算練習accuracy
sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)[source]

ドキュメント:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html#sklearn.metrics.accuracy_score
#         accuracy
from sklearn.metrics import accuracy_score

y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)

0.5
Precision,Recall,F1-score
sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[source]¶

sklearn.metrics.recall_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[source]

sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[source]

ドキュメント:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html#sklearn.metrics.precision_score
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html#sklearn.metrics.recall_score
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html#sklearn.metrics.f1_score
## Precision,Recall,F1-score
from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 0, 1]
precision = metrics.precision_score(y_true, y_pred)
recall = metrics.recall_score(y_true, y_pred)
f1_score = metrics.f1_score(y_true, y_pred)
print("Precision: %s \r
" "Recall: %s \r
" "F1-score: %s \r
" %(precision, recall, f1_score))

Precision: 1.0 Recall: 0.5 F1-score: 0.6666666666666666
AUC
sklearn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None)[source]

ドキュメント:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html#sklearn.metrics.roc_auc_score
## AUC
from sklearn.metrics import roc_auc_score

y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
roc_auc_score(y_true, y_scores)

0.75
4、回帰指標評価計算例
sklearn.metrics.mean_squared_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', squared=True)

sklearn.metrics.mean_absolute_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')[source

ドキュメント:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html#sklearn.metrics.mean_squared_error https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_absolute_error.html#sklearn.metrics.mean_absolute_error
y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0])
y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2])

#MAPE      
def mape(y_true, y_pred):
    return np.mean(np.abs((y_pred - y_true)/y_true)) 

print("MSE:" , metrics.mean_squared_error(y_true, y_pred))
print("RMSE:" , np.sqrt(metrics.mean_squared_error(y_true, y_pred)))
print("MAE:" , metrics.mean_absolute_error(y_true, y_pred))
print("MAPE:" , mape(y_true, y_pred))

MSE: 0.2871428571428571 RMSE: 0.5358571238146014 MAE: 0.4142857142857143 MAPE: 0.1461904761904762
R2-score
sklearn.metrics.r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')[source]

ドキュメント:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.r2_score.html#sklearn.metrics.r2_score
## R2-score
from sklearn.metrics import r2_score

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]

r2_score(y_true, y_pred)

0.9486081370449679
まとめ
初めてDatawhaleデータ分析学習に参加して、一定のpython基礎がありますが、多くの統計学の概念に対してよく分かりません.今回の学習を借りて、よく入門して、特徴工学の構築、モデルの選択などの必要な基本能力を理解したいと思っています.