カゲル入門試合_HousePrices


@update 2016.11.28、自分でいくつかの欠落値を埋める方法を試みて、sklearnを調整していくつかの特徴変換と特徴選択のアルゴリズムを書きました
次のステップ:フィーチャー契約を続行し、モデルパラメータの調整を開始します.
kaggle入門シリーズHousePricesは、この試合は古典的な回帰問題であり、住宅価格を予測するために使用され、この試合はkaggleを熟知し、基本的なデータマイニングプロセスを熟知し、主に特徴的な工事であり、よく見られる欠落値の補充、categorialの特徴の処理を含め、実際にはpythonのpandasパッケージでデータを前処理することを熟知している.
最初の試みの過程は主にRegularized Linear Modelsというkernelを参考にしました.データの処理は最も基本的な方法で、基本的な流れを入門し、熟知するのに良いkernelです.
一.データの処理、モデリングの準備
1.データ変換
特徴の中の属性は2種類に分けられ,定性的と定量的である.定量的プロパティには、距離メトリックの方法がたくさんあります.定性的な属性は一般的にラベルで表されていますが、これは一般的な機械学習アルゴリズムにとって処理しにくいので、一般的な方法は数値属性に変換しますが、どのように変換しますか?どのように単純に数字に変換するかは、距離メトリックに基づいたアルゴリズムの正確性に影響します.一般的にpandasのget_を使いますdummies()は、各属性値を0/1に対応する2元属性次元に変換しますが、元の定性的属性の属性値が多すぎる場合にも問題があります.
all_data = pd.get_dummies(all_data) #     DataFrame        dummies
定量的属性について、1つの必要とされる可能性のある動作は、正規化である.しかし、正規化は必須ではなく、使用するアルゴリズムが距離属性に基づいてメトリックとして使用されない場合、正規化は必要ありません.
前述したRegularized Linear Modelsの手法では,データの描画(scipyパケットの場合もある)によって予測属性が
バイアス分布.このバイアス分布(データ不均衡)はアルゴリズム精度に影響し,著者らはバイアスデータをlog変換することによってデータ傾斜度を改善した.
skewed_feats = train[numeric_feats].apply(lambda x: skew(x.dropna())) #compute skewness
all_data[skewed_feats] = np.log1p(all_data[skewed_feats])
 
  

@2016.11.28: categorical get_dummies , 。

, log , ( ), tree-based , log ,why?

2.

, 。

all_data = all_data.fillna(all_data.mean())

@2016.11.28: のいくつかの な :
1. した を つデータを する:データ が きい に する;
2. / : によく われる;
3. 、ランダム などのモデルを する: の を し、 の が すぎると、その は がなく、 が すぎると、 を に できない. には の にある
4. な として、 な を って : した が く、または した に の がある に されます.
HousePricesの については, 2,3,4の3 を い,Alleyのようなものについては4, の いfeaturesについては3, りは2を いた.このような で に が がった. の は を たなければならないが.
3.
が すぎると、 を き こす があります.1、これらの の に が し、 の を き こす があります.2, は を し, の68%の は の に ちたが,10 では0.02%にすぎなかった.3つ は、プロパティが すぎるとマイニングに がかかるためです. 、これらの は なるアルゴリズムにとっても なり、 えばL 1(Lasso)にとって、ノイズ を に することができ、いくつかのモデルにとって な はフィットしやすいため、 の の 、 である.
@2016.11.28:これをするとファンタジーになります.いくつかの の を したので、 した が くなりました. はやりたくないことを いて、 でこの の に して けているかもしれなくて、 はまた なすぎて、 し っているでしょう、anyway、やはり けなければならなくて、そこで いくつかkernelを て、featuresに してPCAのような の をしていないことを して、どうして りません.
の については かがやっていたので、2つの を してみましたが、 は しています.もっと なことに、 されたfeatures[1 stFlr_2 ndFlr_Sf=['1 stFlrSF']+['2 ndFlrSF']]があります.それは にも されたlassoモデルの で が も いので、 の 、あるいは は に です.
に を してみましょう. えばrandom forestの を して、kernelの はlassocvで に を しています.but anywayはxgboostのほうが がいいでしょう.
@update2016.11.29:モデル を してみました.feature_selectionにおけるRFECVおよびSelectFromModelは、モデルの ( にはsklearnが するscoring を することができる)を する な のサブセットが されるまで に する である、 はモデルにおけるestimatorである.feature_importances_プロパティ( したモデルにはこのプロパティが です)を して、フィーチャーサブセットを します. はたぶん の が いことを してみましたが、その でSelectFromModelとRandomForestを み わせて してみました.まるで くて、コードと を ていました.
from sklearn.model_selection import cross_val_score
import numpy as np
def rmse_cv(model,X_train,y):
    rmse= np.sqrt(-cross_val_score(model, X_train, y, scoring="neg_mean_squared_error", cv=3,n_jobs=-1))
    return(rmse)
from sklearn.feature_selection import SelectFromModel
# u can see from 'SelectFromModel' that this method use model result to select features, 'Wrapper'
# estimator: a supervised model with fit() method
def fea_sel_tree(train_x,train_y,estimator):
    estimator = estimator.fit(train_x,train_x)
    print 'feature importances in this model',
    print sorted(estimator.feature_importances_,reverse=True)
    model = SelectFromModel(estimator,prefit = True)
    after_sel = model.transform(train_x)
    return pd.DataFrame(after_sel)
import xgboost as xgb
from sklearn.ensemble import RandomForestRegressor
esti = RandomForestRegressor(n_estimators=360, max_depth=2,n_jobs=-1,random_state=0)
train_after = fea_sel_tree(alldata_newfea.iloc[:1460],y,esti)
model_xgb = xgb.XGBRegressor(n_estimators=360, max_depth=2, learning_rate=0.1)
print rmse_cv(model_xgb,train_after.iloc[:1460],y)
:( ろしい)
feature importances in this model [0.98394303690584572, 0.0095377084732799645, 0.0065192546208747695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
rmse: [ 0.28251422  0.300882    0.28558193]  # :   rmse   0.13    

に を えて するのはこんなに くて、 ろしくて、しかし はfeature importanceから ることができて、290 りのfeaturesは 3つしか っていないで、 は りになりません.
そこで は、モデルのパラメータがあまり りにならないかもしれないと って、そこで はまず の をつけないで、 にモデルを しましょうと っています.
# の なコードを :クリックしてリンクを く
.Modeling
# なモデリングプロセス
@2016.11.28:model は にxgboost--と じていましたが、 はなく、 のステップで うことができますが、 は に しい だと じました.
そして は モデルを してみるかもしれませんが、これもパラメータ の ですね...HousePricesの から い すかどうかまだ えていませんが、データ の し きい を して び みます.