相关疑难解决方法(0)

scikit-learn:如何缩减'y'预测结果

我正在尝试scikit-learn使用Boston Housing Data Set 学习和机器学习.

# I splitted the initial dataset ('housing_X' and 'housing_y')
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(housing_X, housing_y, test_size=0.25, random_state=33)

# I scaled those two datasets
from sklearn.preprocessing import StandardScaler
scalerX = StandardScaler().fit(X_train)
scalery = StandardScaler().fit(y_train)
X_train = scalerX.transform(X_train)
y_train = scalery.transform(y_train)
X_test = scalerX.transform(X_test)
y_test = scalery.transform(y_test)

# I created the model
from sklearn import linear_model
clf_sgd = linear_model.SGDRegressor(loss='squared_loss', penalty=None, random_state=42) 
train_and_evaluate(clf_sgd,X_train,y_train)
Run Code Online (Sandbox Code Playgroud)

基于这个新模型clf_sgd,我试图y基于第一个实例预测X_train.

X_new_scaled …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scale scikit-learn

22
推荐指数
2
解决办法
2万
查看次数

如何在 GridSearchCV 中使用 TransformedTargetRegressor?

我正在尝试TransformedTargetRegressor在模型管道中使用并在其GridSearchCV上运行。

这是一个最小的工作示例:

from sklearn.datasets import make_regression
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.compose import TransformedTargetRegressor


X,y = make_regression()

model_pipe = Pipeline([
    ('model', TransformedTargetRegressor(RandomForestRegressor()))
])

params={'model__n_estimators': [1, 10, 50]}


model = GridSearchCV(model_pipe, param_grid= params)

model.fit(X,y)
Run Code Online (Sandbox Code Playgroud)

此模型导致以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-48-828bdf0e7ede> in <module>
     17 model = GridSearchCV(model_pipe, param_grid= params)
     18 
---> 19 model.fit(X,y)

~/miniconda3/envs/gymbo/lib/python3.6/site-packages/sklearn/model_selection/_search.py in fit(self, X, y, groups, **fit_params)
    686                 return results
    687 
--> 688             self._run_search(evaluate_candidates) …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

6
推荐指数
2
解决办法
1823
查看次数

使用变换器(估算器)转换sklearn.pipeline中的目标标签

我知道可以链接几个实现变换方法的估算器来转换sklearn.pipeline中的X(特征集).但是我有一个用例,我想要转换目标标签(比如将标签转换为[1 ... K]而不是[0,K-1],我很乐意将其作为我管道中的一个组件是否有可能使用sklearn.pipeline.?

scikit-learn

5
推荐指数
2
解决办法
1098
查看次数

使用 scikit Pipeline 测试模型但只预处理数据一次

假设我有一个数据管道,它进行预处理并在最后有一个估算器。现在,如果我只想在管道的最后一步更改估算器/模型,我该如何在不重新预处理相同数据的情况下做到这一点。下面是一个代码示例

pipe = make_pipeline(
    ColumnSelector(columns),
    CategoricalEncoder(categories),
    FunctionTransformer(pd.get_dummies, validate=False),
    StandardScaler(scale),
    LogisticRegression(),
)
Run Code Online (Sandbox Code Playgroud)

现在我想更改模型以使用 Ridge 或 LogisticRegression 以外的其他模型。如何在不重新进行预处理的情况下执行此操作?

编辑:我可以从以下类型的管道中获取转换后的数据吗

pipe = make_pipeline(
        ColumnSelector(columns),
        CategoricalEncoder(categories),
        FunctionTransformer(pd.get_dummies, validate=False),
        StandardScaler(scale)
    )
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn deep-learning data-science

4
推荐指数
1
解决办法
947
查看次数