python - 创建 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' 我需要通过训练和测试来执行此操作。
解决方案
您需要对数据进行编码。换句话说,将每个类别转换为一个数字(int 或 float)。
像这样映射以下类别:
mapping={'setosa':0,'versicolor':1,'virginica':2}
y.map(mapping)
训练模型后,您将得到0,1 or 2
结果。将其转换回来,您将获得预测。
顺便说一句,如果你要预测一个类别,你必须改变你的模型。LinearRegression()
是一个数值预测器,它只能预测数值。
尝试使用SVC
,LogisticRegression
或任何其他分类模型。
推荐阅读
- nlp - Information extracting from plain text using NLP
- ms-word - 现有的图形标题标签不可用于继续在 Word 中添加标签
- java - 是否有算法来计算计算是否会溢出类型大小?
- python - 从亚马逊页面提取之前的价格
- jupyter-notebook - 如何在 Jupyter Notebook 中的数学方程中写入字符串
- perl - Perl:使用 Office 365 发送邮件
- c# - C# 异常处理 - 最后一个 catch 块获取是否会重新抛出异常?
- scala - 过滤 CassandraJoinRDD
- sql - SQL 为每个额外计数创建一个重复行
- html - 如何将使用变换 css 属性转换为顺风 css?