python - Python Try后不执行Except?
问题描述
我被困在我的问题下方显示的 python 代码上。
此代码是监督神经网络项目的一部分。
encoder.inverse_transform(x)
遇到未知标签时产生 ValueError。
我期望的是:代码为每个 x 返回一个结果,当 x 不在encoder.classes_
结果中时 x 将是'Onbekend'
.
它的作用是:当输出包含一个未知标签时,无论 x 的数量如何,代码都会产生一个“Onbekend”。似乎没有为 Output when 中的每个 x 执行 try 函数。
有谁知道我在这里想念什么?
import pandas as pd
from sklearn import model_selection
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import LabelEncoder
import bisect
# Dataframe creation
data = {'Text': ['Koffie', 'Auto onderdelen','Brandstof', 'Zeilen', 'Studie',
'Cadeau', 'Telefoon'], 'Labels': ['Leven', 'Auto', 'Auto', 'Leven', 'Studie',
'Leven', 'Telefonie']}
trainDF = pd.DataFrame(data=data,
dtype = str)
#split the dataset into training and validation datasets
train_x, valid_x, train_y, valid_y =
model_selection.train_test_split(trainDF['Text'], trainDF['Labels'])
# label encode the target variable
encoder = LabelEncoder()
train_y = encoder.fit_transform(train_y)
valid_y = encoder.fit_transform(valid_y)
# Create a count vectorizer object
count_vect = CountVectorizer(analyzer = 'word', token_pattern='\w{1,}')
count_vect.fit(trainDF['Text'])
# Transform the training and validation data using count vectorizer object
xtrain_count = count_vect.transform(train_x)
xvalid_count = count_vect.transform(valid_x)
classifier = LogisticRegression()
classifier.fit(xtrain_count, train_y)
# Modelling
xinput_count = count_vect.transform(trainDF['Text'])
Output = classifier.predict(xinput_count)
for x in Output:
b = b + 1
try:
R = encoder.inverse_transform(Output)
except ValueError:
R = 'Onbekend'
encoder_classes = encoder.classes_.tolist()
bisect.insort_left(encoder_classes, 'Onbekend')
encoder.classes_ = encoder_classes
print(R)
解决方案
代码应该是:
for x in Output:
try:
x = encoder.inverse_transform(x)
except ValueError:
x = 'Onbekend'
print(x)
因为print(x)
没有嵌套在 for 循环中,所以它会返回 x 的最后一个值,而不是完整的数组。
R = encoder.inverse_transform(Output)
误导的部分是使用完整的输出数组的事实,print(R)
将返回完整的数组,因为Output
它只包含已知的标签,使它看起来像代码是正确的。
推荐阅读
- c# - 在 c# 代码中仅在我的 2 个屏幕中的一个上更改桌面壁纸
- php - Wordpress 主页 301 重定向到本地主机
- beautifulsoup - 查找多个有条件的标签
- java - Google Guava BiMap - 反向获取方法不起作用
- node.js - 在 AWS ElasticBeanstalk 上部署 - 在启动服务器之前运行自定义 npm 脚本?
- reactjs - 如何在 react-native 中从 redux-persist 获取应用程序加载存储?
- javascript - 给定一个字符串数组,将每个字符串转换为: 如果首字母大写则大写 如果首字母小则小写
- php - Braintree 付款中的结帐错误
- javascript - VueJS - 显示输入图像杀死浏览器
- maven - 寻找 tawus ajaxupload jar