2024-09-22 16:41:11 发布
网友
我要用逻辑回归来预测一部电影的票房。 我有一些训练资料包括演员和导演。这是我的数据:
Director1|Actor1|300 million Director2|Actor2|500 million
我将使用整数对导演和演员进行编码。在
这意味着X={[1,1],[2,2]} y=[300,500]和{} 这样行吗?在
X={[1,1],[2,2]} y=[300,500]
你不能在线性回归中使用分类变量。线性回归将所有变量视为数值变量。因此,如果您将Director1编码为1,Director2编码为2,线性回归将尝试根据该编码方案查找关系。它将假定Director2是Director1的两倍大小。实际上,这些数字没有任何意义。你可以把它们编码为143和9879,应该没有什么区别。它们没有任何数字意义。为了确保线性回归正确地处理它们,您需要使用虚拟变量。在
对于虚拟变量,每个类别级别都有一个变量。例如,如果您有3个控制器,您将有3个变量:D1、D2和D3。如果对应的电影由导演1导演,D1的值为1,否则为0;如果影片由导演2导演,则D2的值为1,否则为0。。。因此,对于一组值D2 D2 D3 D1 D2,虚拟变量将为:
D1 D2 D3 D2 0 1 0 D1 1 0 0 D2 0 1 0 D3 0 0 1 D1 1 0 0 D2 0 1 0
在线性回归中,为了避免多重共线性,我们只使用这些变量中的n-1,其中n是类别的数量(本例中的控制器数量)。选择其中一个董事作为基数,用回归模型中的常数表示。不管是哪一个。例如,如果排除D3,您将知道电影是由director3ifD1=0和D2=0导演的。您不需要指定D3=1。在
n-1
n
D1=0
D2=0
D3=1
在scikit learn中,这个转换是用OneHotEncoder完成的。示例来自scikit learndocumentation:
有三个分类变量:性别、地区和浏览器。性别有2个级别:["male", "female"],区域有三个级别:["from Europe", "from US", "from Asia"],浏览器有四个级别:["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]。假设它们是用从零开始的数字编码的。所以[0, 1, 2]是指一个来自美国的男性,他使用Safari。在
["male", "female"]
["from Europe", "from US", "from Asia"]
["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]
[0, 1, 2]
使用enc.fitscikit learn可以推断每个变量的级别数。对于像[0,1,3]这样的观察,如果调用enc.transform,您将看到它们的伪变量。注意,结果数组的长度是2+3+4=9。前两个代表性别(如果是男性,第一个是1),接下来的三个代表地区,依此类推。在
enc.fit
enc.transform
你不能在线性回归中使用分类变量。线性回归将所有变量视为数值变量。因此,如果您将Director1编码为1,Director2编码为2,线性回归将尝试根据该编码方案查找关系。它将假定Director2是Director1的两倍大小。实际上,这些数字没有任何意义。你可以把它们编码为143和9879,应该没有什么区别。它们没有任何数字意义。为了确保线性回归正确地处理它们,您需要使用虚拟变量。在
对于虚拟变量,每个类别级别都有一个变量。例如,如果您有3个控制器,您将有3个变量:D1、D2和D3。如果对应的电影由导演1导演,D1的值为1,否则为0;如果影片由导演2导演,则D2的值为1,否则为0。。。因此,对于一组值D2 D2 D3 D1 D2,虚拟变量将为:
在线性回归中,为了避免多重共线性,我们只使用这些变量中的
n-1
,其中n
是类别的数量(本例中的控制器数量)。选择其中一个董事作为基数,用回归模型中的常数表示。不管是哪一个。例如,如果排除D3,您将知道电影是由director3ifD1=0
和D2=0
导演的。您不需要指定D3=1
。在在scikit learn中,这个转换是用OneHotEncoder完成的。示例来自scikit learndocumentation:
有三个分类变量:性别、地区和浏览器。性别有2个级别:
^{pr2}$["male", "female"]
,区域有三个级别:["from Europe", "from US", "from Asia"]
,浏览器有四个级别:["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]
。假设它们是用从零开始的数字编码的。所以[0, 1, 2]
是指一个来自美国的男性,他使用Safari。在使用
enc.fit
scikit learn可以推断每个变量的级别数。对于像[0,1,3]这样的观察,如果调用enc.transform
,您将看到它们的伪变量。注意,结果数组的长度是2+3+4=9。前两个代表性别(如果是男性,第一个是1),接下来的三个代表地区,依此类推。在相关问题 更多 >
编程相关推荐