代码之家  ›  专栏  ›  技术社区  ›  nhern121

带sklearn的预测建模管道

  •  0
  • nhern121  · 技术社区  · 8 年前

    R 到 Python

    #import data sets
    train_df = pd.read_csv('../input/train.csv') 
    test_df = pd.read_csv('../input/test.csv')
    
    #get the predictors only
    X_train = train_df.drop(["ID", "target"], axis=1) 
    y_train = np.log1p(train_df["target"].values)  
    
    X_test = test_df.drop(["ID"], axis=1)
    
    #grid to do the random search
    
    from sklearn.model_selection import RandomizedSearchCV 
    
    n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)]
    max_features = ['auto', 'sqrt']
    max_depth = [int(x) for x in np.linspace(10, 110, num = 11)] 
    max_depth.append(None)
    min_samples_split = [2, 5, 10]
    min_samples_leaf = [1, 2, 4]
    bootstrap = [True, False]  
    
    # Create the random grid
    random_grid = {'n_estimators': n_estimators,
               'max_features': max_features,
               'max_depth': max_depth,
               'min_samples_split': min_samples_split,
               'min_samples_leaf': min_samples_leaf,
               'bootstrap': bootstrap}
    
    #Create the model to tune
    rf = RandomForestRegressor()
    rf_random= RandomizedSearchCV(estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 10, verbose=2, random_state=42, n_jobs =10)
    #fit the random search model
    rf_random.fit(X_train, y_train) 
    
    #get the best estimator
    best_random = rf_random.best_estimator_ 
    
    # train again with the best parameters on the whole training data?
    best_random.fit(X_train,y_train)
    
    #apply the best predictor to the test set
    pred_test_rf = np.expm1(best_random.predict(X_test)) 
    
    1. .best_estimator_

    1 回复  |  直到 8 年前
        1
  •  2
  •   Vivek Kumar    8 年前

    1)是的,它是由 best_params_ rf_random

    best_random.fit(X_train,y_train)

    随机搜索cv有一个参数 'refit' True

    refit : boolean, or string default=True
            Refit an estimator using the best found parameters on the whole dataset.
    

    3)你的方法似乎还可以。这是标准方法。其他事情可能取决于各种各样的事情,如数据类型、数据大小、使用的算法(估计量)、您必须探索可能性的时间等,但这部分最适合 https://stats.stackexchange.com

    推荐文章