我在python的世界里真的很新。 我已经看到了一个在trainset和testset中分裂的例子。但只能使用数字类型。例子:
import random
with open("datafile.txt", "rb") as f:
data = f.read().split('\n')
random.shuffle(data)
train_data = data[:50]
test_data = data[50:]
所以我想做的是通过常规/相对表达式将数据分成训练或测试集。用输入来做。想象一下,我有一个包含所有水果的专栏,另一个用他的重量,另一个用他的价格,但有些没有价格。我想分割数据,例如苹果价格> 0做火车组,苹果价格0到测试集做一些预测。
我想用数据集来做,我必须输入我想要预测的内容
很抱歉,如果我没有解释清楚。
谢谢你的帮助,任何建议都会被贬低。
数据可能是这样的
Fruits Weight Price
Apple 5 1
Apple 3 0.6
Apple 3 0
Banana 5 10
Banana 4 8
Banana 2 0
Orange 10 20
Orange 5 12
Orange 2 0
Kiwi 5 6
Kiwi 5 6
Kiwi 2 0
然后我想输入像水果:苹果,重量:10 输出想要成为培训后的价格。
再次感谢您的帮助!!!
答案 0 :(得分:1)
为此使用pandas和numpy:
import pandas as pd
import numpy as np
df = pd.read_table('datafile.txt', sep='\s+', header=None)
df.fillna(0, inplace=True)
print(df)
print(df.reindex(np.random.permutation(df.index)))
第一个print
的输出是:
0 1
0 apple 10.0
1 banana 4.0
2 orange 2.0
3 peach 0.0
使用numpy的permutation
函数后,DataFrame
看起来像这样:
0 1
2 orange 2.0
0 apple 10.0
1 banana 4.0
3 peach 0.0
如果您想获取数据的第一列,请使用df[0]
,然后可以相应地访问第二列:df[1]
。两者基本上都是numpy列表。有了这些数据,您就可以进行培训和测试。我希望这对你有所帮助。由于相当不明确的问题,这就是我所能做的。
答案 1 :(得分:0)
你说你要根据一个逻辑来分割数据以进行预测,在这个逻辑中,火车组将具有价格>的结果。 0,而测试集将有0价格的水果。如果您尝试构建任何预测模型,我强烈建议反对,因为您的模型会有预测偏差。
例如,如果您使用此逻辑训练逻辑回归模型,您将始终高估测试集中的价格,因为您的训练集仅具有正值。对于所有类别,训练和测试集应具有相等的边际概率。
在您想要分割的数据集结束后,您可以尝试使用sklearn.train_test_split进行拆分。例如
import numpy as np
from sklearn.model_selection import train_test_split
#Create 5x4 table with the last column to be regarded as target value
data = np.arange(20).reshape(5, 4)
#Split into training/test for features(X) and target variable(y)
X_train, X_test, y_train, y_test = train_test_split(data[:,0:3],
data[:,3], test_size=0.33, random_state=42)