【问题标题】:Choosing Machine Learning algorithm for input values present in range为范围内的输入值选择机器学习算法
【发布时间】:2019-05-27 01:08:33
【问题描述】:

我正在开发基于土壤 pH 耐受值的最适合作物的机器学习模型。存在于 (5.0-6.0) 等范围内的输入值和多个裁剪值位于单个范围值中。比如

------      ---------  
Crop        pH-values 
------      ---------
Apple       (5.0-6.5)
Basil       (5.5-6.5)
Carrot      (5.5-7.0)
Cauliflower (5.5-7.5)
Chervil     (6.0-6.7)
Corn        (5.5-7.5.)
Cucumber    (5.5-7.0)

请提出最适合当前问题的算法。

【问题讨论】:

  • 所以你试图预测Crop
  • 是的,基于 pH 值
  • 那就是分类问题。您可以使用回归树。

标签: machine-learning classification linear-regression data-science


【解决方案1】:

如果你想要预测Crop的类型,这是一个分类问题。您可以先看看 Scikit-Learn 中的一些 classifiers,它们使用起来非常简单。您还可以从文档中的示例中很好地了解如何进行操作。


  • 这是一个关于如何进行的简短草图

首先,您必须进行一些预处理。您可以先从pH-values 范围内的下限和上限中提取信息,例如:

s = df['pH-values'].str.strip('(&)').str.split('-')
X_df = pd.DataFrame(s.values.tolist(), columns = ['low','high'])
X_df['high'] = X_df.high.str.rstrip('.').astype(float)
X_df['low'] = X_df.low.astype(float)
print(X_df)

   low  high
0  5.0   6.5
1  5.5   6.5
2  5.5   7.0
3  5.5   7.5
4  6.0   6.7
5  5.5   7.5
6  5.5   7.0

下一步是将训练和测试数据提供给您决定使用的任何分类器(例如RandomForestClassifier),并预测通过将您的数据拆分为train 和测试`:

from sklearn.model_selection import train_test_split
y = df.Crop.values
X = X_df.values

# Split in train and test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# Fit the classifier
rf = RandomForestClassifier()
model  = rf.fit(X_train, y_train)

# Predict using X_test
y_pred = model.predict(X_test)

这会给你一些东西:

print(y_pred)
array(['Carrot', 'Carrot', 'Cauliflower'], dtype=object)

最后检查您使用定义的模型获得的准确性。为此,您可以使用accuracy_score:

from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred, normalize=False)

【讨论】:

  • 好亲爱的,让我试试,完成后回复你。非常感谢。
  • 对您有帮助吗?如果是,请不要忘记接受,谢谢!
猜你喜欢
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 2019-01-01
  • 2015-09-30
  • 2020-01-25
  • 1970-01-01
相关资源
最近更新 更多