选择适合输入值范围的机器学习算法

我正在开发一个基于土壤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类型,这是一个分类问题。您可以从查看Scikit-Learn中的一些分类器开始,这些分类器使用起来非常简单。您还可以通过文档中的示例了解如何进行操作。


  • 以下是如何进行操作的简要草图

首先,您需要进行一些预处理。您可以从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  high0  5.0   6.51  5.5   6.52  5.5   7.03  5.5   7.54  6.0   6.75  5.5   7.56  5.5   7.0

下一步是将训练和测试数据输入到您决定使用的分类器中(例如RandomForestClassifier),并使用通过将数据分成traintest得到的X_test进行预测:

from sklearn.model_selection import train_test_splity = df.Crop.valuesX = X_df.values# Split in train and testX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)# Fit the classifierrf = RandomForestClassifier()model  = rf.fit(X_train, y_train)# Predict using X_testy_pred = model.predict(X_test)

这将给您类似于下面的结果:

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注