首页 > 解决方案 > 创建 3 个分类模型以根据其他可用列预测类别

问题描述

我有三种类型的类(stetosa、versicolor、virginica)和其他 4 列,分别是 sepal_length、sepal_width、petal_length、petal_width,大约 150 行,每列都填充了自己的信息(所以那里没有什么是空的)。我需要根据其他列来预测类的类型。这是我尝试过的:

import numpy as np
import pandas as pd
df = pd.read_csv("data.csv")
X=df[["sepal_length","sepal_width","petal_length","petal_width"]]
y=df["class"]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1)

from sklearn.linear_model import LinearRegression
clf=LinearRegression()
clf.fit(y_train, X_train)
clf.predict(y_test)

标记为响应此问题的文本: ValueError: could not convert string to float: 'virginica' 我需要通过训练和测试来执行此操作。

标签: pythonpandasmachine-learningpredictionmodeling

解决方案


您需要对数据进行编码。换句话说,将每个类别转换为一个数字(int 或 float)。

像这样映射以下类别:

mapping={'setosa':0,'versicolor':1,'virginica':2}
y.map(mapping)

训练模型后,您将得到0,1 or 2结果。将其转换回来,您将获得预测。

顺便说一句,如果你要预测一个类别,你必须改变你的模型。LinearRegression()是一个数值预测器,它只能预测数值。

尝试使用SVC,LogisticRegression或任何其他分类模型。


推荐阅读