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
好的。很高兴听到这个消息。祝你好运:)