LightGBMを使用し、パソコンのスペックから、パソコンの価格を予想したいです。
パソコンの価格がNanの列の予想を行いたいです。データの前処理の段階で、Nanを0に置換しています。
価格以外の欠損値を含むデータは削除しています。
最後のテストデータにおける予測の部分で、価格が分からないデータの価格を予測できるの思うのですが、上手く予測できません。LightGBMで学習後の、予測方法について教えていただきたいです。
Pythonここに言語を入力
1#all_price!=1の行の抽出 2train_df = data_df[data_df.all_price!=0] 3#data_dfを学習データとテストデータに分ける 4train_X = data_df[data_df["all_price"]!=0].drop("all_price",axis=1).reset_index(drop=True) 5train_Y = train_df["all_price"] 6test_X = data_df[data_df["all_price"]==0].drop("all_price",axis=1).reset_index(drop=True) 7 8!pip install lightgbm 9import lightgbm as lgb 10from sklearn.model_selection import train_test_split 11from sklearn.model_selection import KFold 12#学習データの20%を検証データとする 13X_train,X_valid,y_train,y_valid = train_test_split(train_X,train_Y,test_size=0.2) 14#カテゴリ変数の指定 15categories = ["memory","storage","OS","CPU","CPUscore","weight","time","size"] 16lgb_train = lgb.Dataset(X_train,y_train,categorical_feature=categories) 17lgb_eval = lgb.Dataset(X_valid,y_valid,categorical_feature=categories,reference=lgb_train) 18#ハイパーパラメータの設定 19lgbm_params = {"objective":"binary", 20 "random_seed":1234 21 } 22model_lgb = lgb.train(lgbm_params, 23 lgb_train, 24 valid_sets=lgb_eval, 25 num_boost_round=100, 26 early_stopping_rounds=20, 27 verbose_eval=10) 28#クロスバリデーションで学習する 29folds = 3 30kf = KFold(n_splits=folds) 31#予測精度の計測 32from sklearn.metrics import accuracy_score 33models = [] 34 35for train_index,val_index in kf.split(train_X): 36 X_train = train_X.iloc[train_index] 37 X_valid = train_X.iloc[val_index] 38 y_train = train_Y.iloc[train_index] 39 y_valid = train_Y.iloc[val_index] 40 41 lgb_train = lgb.Dataset(X_train,y_train, 42 categorical_feature = categories 43 ) 44 lgb_eval = lgb.Dataset(X_valid,y_valid, 45 categorical_feature = categories, 46 reference = lgb_train) 47 model_lgb = lgb.train(lgbm_params,lgb_train, 48 valid_sets = lgb_eval, 49 num_boost_round = 100, 50 early_stopping_rounds = 20, 51 verbose_eval = 10, 52 ) 53#テストデータにおける予測 54preds = [] 55for model in models: 56 pred = model.predict(test_X) 57 preds.append(pred)
あなたの回答
tips
プレビュー