Python scikit学习-预测模型返回”;“错误”;预测

Python scikit学习-预测模型返回”;“错误”;预测,python,machine-learning,scikit-learn,random-forest,Python,Machine Learning,Scikit Learn,Random Forest,我在一个名为shippings.CSV的CSV文件中有以下数据集。该文件有>8k行: | Consignor Code | Consignee Code | Origin | Destination | Carrier Code | |----------------|----------------|--------|-------------|--------------| | 6403623194 | 6405167792 | DKCPH | AUMEL

我在一个名为
shippings.CSV
的CSV文件中有以下数据集。该文件有>8k行:

| Consignor Code | Consignee Code | Origin | Destination | Carrier Code | 
|----------------|----------------|--------|-------------|--------------| 
| 6403623194     | 6405167792     | DKCPH  | AUMEL       | 6402746389   | 
| 6403623194     | 6403823770     | DKBLL  | CNTSN       | 6402746354   | 
| 6403623194     | 6403823770     | DKBLL  | CNTSN       | 6402746354   | 
| 6403623194     | 6402546085     | DKBLL  | USDEN       | 6402746424   | 
| 6403623194     | 6402546085     | DKBLL  | USDEN       | 6402746424   | 
...
我正在尝试创建一个简单的模型,在该模型中,我可以根据
收货人代码
预测
目的地

为此,我创建了以下代码:

#加载数据集并删除不需要的列和NaN值。
dataset=pd.read\u csv('shippings\u non\u empty.csv',header=0,skip\u blank\u lines=True)
数据集.drop(列=['发货人代码','承运人代码','Origin'],inplace=True)
dataset.dropna(子集=['收货人代码','Destination'],inplace=True)
#将收货人代码视为字符串
数据集['收货人代码]]=数据集['收货人代码]]。aType('int64')
#定义我们的目标(我们想要预测的),并将其从
target=dataset.pop('Destination')
#将所有数据转换为数值,以便使用.fit函数。
#为此,我们使用LabelEncoder
leu=preprocessing.LabelEncoder()
le_target=preprocessing.LabelEncoder()
target=le_target.fit_变换(列表(目标))
dataset['Delegator Code']=le_delegator.fit_变换(
列表(数据集['收货人代码]))
#准备数据集。
X_列车,X_试验,y_列车,y_试验=列车试验(
数据集,目标,测试大小=0.30,随机状态=42)
此时,我的数据集(训练/测试)已准备就绪。然后,我继续拟合模型并预测新的输入:

#准备模型并安装。
model=RandomForestClassifier()
模型拟合(X\U系列、y\U系列)
#对测试集进行预测。
预测=模型预测(X_检验)
#打印准确度分数。
打印(“预测输出的准确度得分为:{}”。格式(
准确度评分(y检验、预测)
#对新输入进行测试。
新输入=[“6402546085”]
fitted_new_input=np.array([le_designer.transform([new_input[0]])[0]]))
新的预测=模型。预测(拟合的新输入。重塑(1,-1))
打印(le_目标。逆_变换(新_预测))
上述代码将打印如下:

The accuracy score of the predicted output is: 0.7233265720081136
['SAJED']
如您所见,它将目的地预测为“SAJED”。我觉得这很奇怪,因为我的数据集中没有任何一个数据集,
收货人代码是
6402546085
,是目的地
SAJED


我做错了什么

您有一个astype(int64),其中您的注释显示为string。这是个错误吗?@JasonChia这确实是个错误!很好的接球。我把它改为
astype(str)
,现在它返回
USDEN
这是否意味着你的问题解决了?@JasonChia抱歉,是的!或者至少看起来是这样。根据我的数据,
6402546085
总是被发送到目的地
USDEN
好的。很高兴听到这个消息。祝你好运:)