Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用sklearn';s使用自定义数据转换器转换目标记录器?_Python_Scikit Learn - Fatal编程技术网

Python 如何使用sklearn';s使用自定义数据转换器转换目标记录器?

Python 如何使用sklearn';s使用自定义数据转换器转换目标记录器?,python,scikit-learn,Python,Scikit Learn,我想使用sklearn.compose.TransformedTargetRegressor,如中所示。然而,这个转换器是定制的,我遇到了一个错误 在这个最小的例子中,目标值应该乘以10,然后在预测时再除以10。(在我的实际应用程序中,目标值必须从非数字格式转换为数字格式。) 将numpy导入为np 导入sklearn 从sklearn.compose导入转换的目标浏览器 从sklearn.linear\u模型导入线性回归 类MyTransform(sklearn.base.Transforme

我想使用
sklearn.compose.TransformedTargetRegressor
,如中所示。然而,这个转换器是定制的,我遇到了一个错误

在这个最小的例子中,目标值应该乘以10,然后在预测时再除以10。(在我的实际应用程序中,目标值必须从非数字格式转换为数字格式。)

将numpy导入为np
导入sklearn
从sklearn.compose导入转换的目标浏览器
从sklearn.linear\u模型导入线性回归
类MyTransform(sklearn.base.TransformerMixin):
def配合(自、自、自、自):
回归自我
def变换(自,X):
返回np.数组(X)*10
def逆_变换(自,X):
返回np.数组(X)/10
def MyLinearRegression():
返回转换的目标聚集器(
回归器=线性回归(),
transformer=MyTransform()
)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
模型=我的线性回归()
model.fit(X=[1]、[2]、[3]、y=[1,2,3])#引发类型错误
这引起:

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python ce\helpers\pydev\\u pydev_bundle\pydev_umd.py”,第197行,在运行文件中
pydev_imports.execfile(文件名、全局变量、本地变量)#执行脚本
文件“C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python ce\helpers\pydev\\u pydev\u imps\\u pydev\u execfile.py”,第18行,在execfile中
exec(编译(内容+“\n”,文件,'exec'),全局,loc)
文件“C:/Users/me/.PyCharmCE2019.3/config/scratches/scratch.py”,第26行,在
model.fit(X=[1]、[2]、[3]、y=[1,2,3])#引发类型错误
文件“C:\Users\me\.virtualenvs\project--3333Ox\uUlib\site packages\sklearn\compose\\u target.py”,第185行,以合适的格式
自配变压器(y\U 2d)
文件“C:\Users\me\.virtualenvs\project--3333Ox\uUlib\site packages\sklearn\compose\\u target.py”,第127行,在fit\u transformer中
self.transformer=克隆(self.transformer)
文件“C:\Users\me\.virtualenvs\project--3333Ox\ulib\site packages\sklearn\base.py”,第64行,在clone中
raise TypeError(“无法克隆对象“%s”(类型%s):”
TypeError:无法克隆对象“”(类型):它似乎不是scikit学习估计器,因为它未实现“get_params”方法。

您只需要继承sklearn.base.BaseEstimator以及transformermixin:)。类型错误显示:

它似乎不是一个scikit学习估计器

因此,您只需要将其设置为1:D。下面的代码应该可以工作

import numpy as np
import sklearn
from sklearn.compose import TransformedTargetRegressor
from sklearn.linear_model import LinearRegression

class MyTransform(sklearn.base.BaseEstimator, sklearn.base.TransformerMixin):
    def fit(self, *_, **__):
        return self

    def transform(self, X):
        return np.array(X)*10

    def inverse_transform(self, X):
        return np.array(X)/10


def MyLinearRegression():
    return TransformedTargetRegressor(
        regressor=LinearRegression(),
        transformer=MyTransform()
    )



model = MyLinearRegression()
model.fit(X=[[1], [2], [3]], y=[1, 2, 3])