Getting a value Error : how to use string data type in model.fit for jupyter using DecisionTreeClassifier?
Getting a value Error : how to use string data type in model.fit for jupyter using DecisionTreeClassifier?
这是代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
dataset = pd.read_csv("emotion.csv")
X = dataset.drop(columns = ["mood"])
y = dataset['mood']
model = DecisionTreeClassifier()
model.fit(X,y)
model.predict([["i am sad"]])
这就是错误
ValueError: could not convert string to float: 'oh yeah'
如有任何帮助,我们将不胜感激....
特征工程
您不能使用 DecisionTreeClassifier
中用字符串表示的原始特征。你必须在用数字表示的数据上训练你的决策树。 ValueError: could not convert string to float: 'oh yeah'
表示决策树试图将您数据中的 float()
个值转换为数字,但没有成功。
如果你有分类特征 - 用一些编码方法处理它们:例如,标签编码,一种热编码。您可以在许多不同的来源中阅读更多关于分类特征编码方法的信息,例如here.
如果您有文本特征 - 使用特征提取方法基于它们生成新特征:例如,TF-IDF。同样,您可以在上面找到许多材料,例如methods overview in scikit-learn
documentation.
例子
这里是一个关于如何处理仅用文本表示的数据的示例。我建议您研究 TF-IDF 技术和 TfidfVectorizer
文档页面以更好地理解正在发生的事情。
数据:https://github.com/dair-ai/emotion_dataset/blob/master/README.md
代码:
import pickle
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
with open('merged_training.pkl', 'rb') as file:
data = pickle.load(file)
vectorizer = TfidfVectorizer(min_df=5, max_features=1000)
X = vectorizer.fit_transform(data['text'])
y = data['emotions']
model = DecisionTreeClassifier(max_depth=10, random_state=13)
model.fit(X, y)
accuracy_score(y, model.predict(X))
输出:
0.3708941025745605
请注意,这只是一个开始,还有很多地方需要改进。例如:
- 分离训练和验证数据集
- 预处理输入文本
- 尝试其他模型,例如逻辑回归或提升
- 调整超参数
我希望这能让您了解可以用文本数据做什么。
这是代码
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
dataset = pd.read_csv("emotion.csv")
X = dataset.drop(columns = ["mood"])
y = dataset['mood']
model = DecisionTreeClassifier()
model.fit(X,y)
model.predict([["i am sad"]])
这就是错误
ValueError: could not convert string to float: 'oh yeah'
如有任何帮助,我们将不胜感激....
特征工程
您不能使用 DecisionTreeClassifier
中用字符串表示的原始特征。你必须在用数字表示的数据上训练你的决策树。 ValueError: could not convert string to float: 'oh yeah'
表示决策树试图将您数据中的 float()
个值转换为数字,但没有成功。
如果你有分类特征 - 用一些编码方法处理它们:例如,标签编码,一种热编码。您可以在许多不同的来源中阅读更多关于分类特征编码方法的信息,例如here.
如果您有文本特征 - 使用特征提取方法基于它们生成新特征:例如,TF-IDF。同样,您可以在上面找到许多材料,例如methods overview in scikit-learn
documentation.
例子
这里是一个关于如何处理仅用文本表示的数据的示例。我建议您研究 TF-IDF 技术和 TfidfVectorizer
文档页面以更好地理解正在发生的事情。
数据:https://github.com/dair-ai/emotion_dataset/blob/master/README.md
代码:
import pickle
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
with open('merged_training.pkl', 'rb') as file:
data = pickle.load(file)
vectorizer = TfidfVectorizer(min_df=5, max_features=1000)
X = vectorizer.fit_transform(data['text'])
y = data['emotions']
model = DecisionTreeClassifier(max_depth=10, random_state=13)
model.fit(X, y)
accuracy_score(y, model.predict(X))
输出:
0.3708941025745605
请注意,这只是一个开始,还有很多地方需要改进。例如:
- 分离训练和验证数据集
- 预处理输入文本
- 尝试其他模型,例如逻辑回归或提升
- 调整超参数
我希望这能让您了解可以用文本数据做什么。