我正在尝试使用 Python 进行机器学习来预测未来值。我的数据 (X1, ... , X8, Y) 可以在附图中看到。
为了测试,我开始使用 sklearn RandomForestRegressor,因为我试图预测的值是一个浮点数。我的输入数据最初是混合数据类型(字符串、浮点数、整数和 True/False 语句)。所有这些我都转换为数字。每个字符串代表一个唯一的整数。每个真/假由 1 或 0 表示。
我在网上找到的例子通常是数字(回归量问题?)或字符串(分类器问题?)。
这是混合输入数据类型的正确方法吗?
我很乐意提供任何意见。
'''
X1,X2,X3,X4,X5,X6,X7,X8,Y
93,150,18,10,63,641.1024566,9,0,49.87777112
93,371,19,3,62,641.1024566,1,0,48.85200719
93,150,19,4,62,641.1024566,12,1,41.67165968
93,196,19,6,62,641.1024566,11,1,47.1851408
93,416,19,9,414,641.1024566,5,1,46.67225884
93,196,19,9,375,647.0940683,7,0,43.35530258
93,416,19,10,428,641.1024566,1,1,46.80047933
93,196,19,10,430,641.1024566,6,0,50.19832235
93,196,19,11,579,629.1192331,4,1,46.55482325
93,416,20,2,422,641.1024566,3,1,48.21090473
93,196,20,3,429,641.1024566,10,1,47.95446375
93,150,20,3,429,641.1024566,11,1,48.08268424
93,196,20,4,430,641.1024566,12,1,47.69802277
93,196,20,5,427,641.1024566,11,1,46.99281007
93,196,20,5,424,641.1024566,10,1,47.31336129
93,206,20,6,6,641.1024566,2,1,47.1851408
93,196,20,6,427,491.312163,11,1,35.66926303
93,196,20,9,430,641.1024566,4,1,47.24925105
93,416,20,8,362,641.1024566,8,1,48.08268424
'''
# Normalize input values
predictors = list(set(list(df1.columns))-set(target_column))
maximumPredictor = df1[predictors].max()
df1[predictors] = df1[predictors]/maximumPredictor
df1.describe().transpose()
df2[predictors] = df2[predictors]/maximumPredictor
df2.describe().transpose()
X = df1[predictors].values
y = df1[target_column].values
X_predict = df2[predictors].values
# Split data to evaluate the model with a portion of input data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=40)
# This is the regressor
regressor = RandomForestRegressor(n_estimators=50,
)
# Train regressor
regressor.fit(X_train, y_train.ravel())
# Make a prediction from test data
y_pred = regressor.predict(X_test)
答案 0 :(得分:0)
如果字符串重复并且您已将字符串 1 编码为 93,将字符串 2 编码为 94,依此类推,您的方法就可以了。否则您无法使用此方法,此资源可能很有用:https://stats.stackexchange.com/questions/339656/mix-of-text-and-numeric-data。
答案 1 :(得分:0)
首先
<块引用>我在网上找到的例子通常是数字(回归量 问题?)或字符串(分类器问题?)。
这与您预测的事物(标签)更相关。如果您从一组有限的可能类别中预测一个类别(可以是一个字符串),那么您就是在谈论分类。如果您要预测一个连续值,其中该值是连续集合中的任何值 - 您在谈论的是回归。
在你的情况下,Y 似乎是后一种情况,所以回归。
您的问题重点关注:我可以使用字符串作为输入数据并将其与数字数据结合起来吗?这其实没那么容易。
您已将每个唯一字符串转换为唯一整数,但这会在数据中引入不需要的关系。例如:
这意味着字符串中存在排序。回归算法将尝试使用这种排序,但由于它没有意义,因此无法从中找到有价值的信息。
更好的解决方案是: