我正在写一个使用线性回归的应用程序。就我而言,sklearn。线性模型。屋脊
。我很难将我想要预测的数据点设置为Ridge
的正确形状。我简要介绍了我的两个应用程序以及问题是如何出现的:
第一次申请:
我的数据点每个只有一个特性,都是字符串,因此我使用一个热编码,以便能够将它们与Ridge
一起使用。之后,数据点(X_hotcoded
)各有9个特征:
import pandas as pd
X_hotEncoded = pd.get_dummies(X)
在拟合Ridge
到X_hotEncoded
和标签y
后,我将训练好的模型保存为:
from sklearn.externals import joblib
joblib.dump(ridge, "ridge.pkl")
第二次申请:
现在我有一个训练好的模型保存在磁盘上,我喜欢在我的第二个应用程序中检索它,并预测一个数据点的y
(标签)。这就是我遇到上述问题的地方:
# X = one datapoint I like to predict y for
ridge= joblib.load("ridge.pkl")
X_hotEncoded = pd.get_dummies(X)
ridge.predict(X_hotEncoded) # this should give me the prediction
这在最后一行代码中给出了以下错误:
value错误:形状(1,1)和(9,)未对齐:1(尺寸1)!=9(尺寸0)
Ridge
被训练了9个特性,因为我在所有数据点上使用了One-Hot编码。现在,当我喜欢预测一个数据点(只有一个功能)时,我很难将这个数据点设置成正确的形状,以便Ridge能够处理它。一个热编码对一个数据点没有影响,只有一个功能。
有人知道解决这个问题的好办法吗?
一个可能的解决方案可能是将列名写入第一个应用程序中的磁盘,并在第二个应用程序中检索它,然后在那里重建数据点。可以像这里所说的那样检索一个热编码数组的列名:在熊猫中逆转“一个热”编码
这里发生的情况如下:
在培训阶段,您决定使用编码将单个分类特征转换为9个数字特征(一个热特征)。您在这个编码上训练了回归算法。因此,为了将其用于未知(测试)数据,您必须以与培训期间完全相同的方式转换这些数据。
不幸的是,我不认为你可以保存pd.get_dummies
使用的编码并重用它。您应该使用sklearn.preprocessing.OneHotEncoder()
代替。所以在训练期间:
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
X_hotEncoded = enc.fit_transform(X)
fit_transform()
首先将编码器匹配到训练数据,然后使用它来转换数据。与pd.get_dummies()
的区别在于,您现在有一个编码器对象,可以保存该对象并在以后重用:
joblib.dump(enc, "encoder.pkl")
在测试期间,您可以应用训练期间使用的相同编码,如下所示:
enc = joblib.load("encoder.pkl")
X_hotEncoded = enc.transform(X)
请注意,您不想再次安装编码器(这是pd.get_dummies()
将要做的),因为对训练和测试数据使用相同的编码是至关重要的。
注意:
如果测试数据包含训练数据中不存在的值,您将遇到问题(因为编码器不知道如何对这些未知值进行编码)。要避免这种情况,您可以:
onehotcoder()
提供categories
参数,并向其传递所有类别的列表
我是CNN的新手,我正在尝试使用CIFAR-10数据集训练分类器。我遵循Pjreddie的教程来训练10类数据集的简单分类器。 我使用下面的代码训练模型,得到了cifar\U small。权重,我后来将其用于检测 在训练了简单的网络之后,我尝试使用cifar\U small进行检测。cfg和cifar\U小型。重量 层过滤器大小输入输出 0 conv 32 3 x 3/1 28 x 28 x 3-
问题内容: 我像这样使用scikit-learn的SVM: 我的问题是,当我使用分类器预测训练集成员的班级时,即使在scikit- learns实现中,分类器也可能是错误的。(例如) 问题答案: 是的,可以运行以下代码,例如: 分数是0.61,因此将近40%的训练数据被错误分类。部分原因是,即使默认内核是(理论上也应该能够对任何训练数据集进行完美分类,只要您没有两个带有不同标签的相同训练点),也可
文章信息 通过本教程,你可以掌握技能:使用预先训练的词向量和卷积神经网络解决一个文本分类问题 本文代码已上传到Github 本文地址:http://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html 本文作者:Francois Chollet 什么是词向量? ”词向量”(词嵌入)是将一类将词的语义映射到向量空间
我已经在AWS SageMaker上使用内置算法语义分割训练了一个模型。这个名为model.tar.gz的训练模型存储在S3上。所以我想从S3下载这个文件,然后使用它在我的本地电脑上进行推断,而不使用AWS SageMaker。 以下是三个文件: > :包括网络架构、数据输入和训练的参数。请参阅语义分割超参数。 我的代码: 错误:
我希望使用AWS Sagemaker工作流部署一个预训练的模型,用于实时行人和/或车辆检测,我特别想使用Sagemaker Neo编译模型并将其部署在边缘。我想从他们的模型动物园中使用OpenVino的预构建模型之一,但是当我下载模型时,它已经是他们自己的优化器的中间表示(IR)格式。 > 如果没有,是否有任何免费的预训练模型(使用任何流行的框架,如pytorch,tenorflow,ONXX等)
问题内容: 因此,我对此有疑问,一直在寻找答案。所以问题是我何时使用 这之后,我将训练和测试模型(,作为特征,如标签),并得到一些准确度得分。现在我的疑问是,当我必须预测新数据集的标签时会发生什么。说, 因为当我规范化列时,和的值将根据新数据而不是将在其上训练模型的数据来更改。因此,现在将是下面的数据准备步骤之后的数据。 的价值和将关于改变和价值。的数据准备是关于的。 有关不同数字的数据准备如何有