目前试图测试我的模型与其余30%的数据,并显示测试结果,但似乎无法测试它
from sklearn.model_selection import train_test_split
x_training_data, x_test_data, y_training_data, y_test_data = train_test_split(x_data, y_data, test_size = 0.3)
from sklearn.linear_model import LinearRegression
MLmodel = LinearRegression()
MLmodel.fit(x_training_data, y_training_data)
pd.DataFrame(MLmodel.coef_, x.columns, columns = ['Coeff'])
2条答案
按热度按时间dl5txlt91#
IIUC,您 * 至少 * 有一列需要用
factorize
编码为数字。我做了下面的例子来向你展示一般的逻辑(* 基于你的输入 *):
输出:
i7uq4tfw2#
分类数据编码
大多数机器学习模型只接受数字数据,例如:它们不接受字符串或任何其他数据格式作为输入。因此,您必须将数据从初始数据格式/表示 * 编码 * 为数字表示。
这将给予你一个类似的错误,因为你的列“性别”,“收入”,“位置”没有用数字表示,这是线性模型所需要的。
标签编码
有几种方法可以对数据进行编码,最简单的一种称为“标签编码”,您可以将变量中的每个类别表示为数字。例如,在性别变量中,我们可以使用0表示男性,1表示女性。同样,对于位置,“纽约”将表示为0,洛杉矶为1,“芝加哥”为2,“Houston”乘以3。那么您的 Dataframe 将如下所示:
你还应该注意变量的数据类型,例如income是一个数值变量,但是它在我们的dataframe中被表示为字符串。你可以使用x_data.dtypes来查看每个变量/列的数据类型
将输出以下内容:
一次热编码
然而,这并不总是编码数据的最佳方式,因为它假设类别之间存在顺序关系(3大于0),但对于某些类别特征没有意义。
现在你的x_data_new看起来像这样:
| 指数|销售|性别_女性|性别_男|收入_100000|收入_30000|收入_50000|收入_75000|位置_芝加哥|位置_休斯顿|位置_洛杉矶|地点_纽约||
| --------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|
| 0|一百|0|1|0|0|1|0|0|0|0|1||
| 1|两百|1|0|0|0|0|1|0|0|1|0||
| 二|三百|0|1|1|0|0|0|1|0|0|0||
| 三|四百|1|0|0|1|0|0|0|1|0|0||
同样,这只适用于某些用例,假设您有一个包含数千或数百万类别的变量/列,它将导致您的输入数据具有大量的行。这就是为什么有其他编码类型(频率编码,目标编码等)。