我一直在尝试这个:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(20,5), columns=["A","B","C","D", "E"])
a = list(df.columns.values)
a.remove("A")
X = df[a]
y = df["A"]
X_train = X.iloc[0: floor(2 * len(X) /3)]
X_test = X.iloc[floor(2 * len(X) /3):]
y_train = y.iloc[0: floor(2 * len(y) /3)]
y_test = y.iloc[floor(2 * len(y) /3):]
# normalise
from sklearn import preprocessing
X_trainS = preprocessing.scale(X_train)
X_trainN = pd.DataFrame(X_trainS, columns=a)
X_testS = preprocessing.scale(X_test)
X_testN = pd.DataFrame(X_testS, columns=a)
y_trainS = preprocessing.scale(y_train)
y_trainN = pd.DataFrame(y_trainS)
y_testS = preprocessing.scale(y_test)
y_testN = pd.DataFrame(y_testS)
import sklearn
from sklearn.svm import SVR
clf = SVR(kernel='rbf', C=1e3, gamma=0.1)
pred = clf.fit(X_trainN,y_trainN).predict(X_testN)
给出此错误:
C:\Anaconda3\lib\site-packages\pandas\core\index.py:542:FutureWarning:使用iloc时slice indexer应该是整数而不是浮点“而不是浮点”,FutureWarning)---------------------------------------------------------------------------------------------------------------------------------------------------------------
C:\anaconda3\lib\site-packages\sklearn\svm\base.py in fit(self,X,y,sample_weight)174 175seed=rnd.randint(np.iinfo('i').max)-->176fit(X,y,sample_weight,solver_type,kernel,random_seed=seed)177#请参阅此文件中对np.iinfo的另一次调用的注释178
C:\anaconda3\lib\site-packages\sklearn\svm\base.py in_dense_fit(self,X,y,sample_weight,solver_type,kernel,random_seed)229 cache_size=self.cache_size,coef0=self.coef0,230 gamma=self._gamma,epsilon=self.epsilon,-->231 max_iter=self.max_iter,random_seed=random_seed)232 233
C:sklearn.svm.libsvm.fit中的\anaconda3\lib\site-packages\sklearn\svm\libsvm.pyd(Sklearn\svm\libsvm.c:1864)()
ValueError:缓冲区的维度数错误(应为%1,得到%2)
我不知道为什么。有人能解释吗?我认为它与预处理后转换回数据流有关。
这里的错误在您作为标签传递的df中:y_train
如果与示例文档版本和代码进行比较:
In [40]:
n_samples, n_features = 10, 5
np.random.seed(0)
y = np.random.randn(n_samples)
print(y)
y_trainN.values
[ 1.76405235 0.40015721 0.97873798 2.2408932 1.86755799 -0.97727788
0.95008842 -0.15135721 -0.10321885 0.4105985 ]
Out[40]:
array([[-0.06680594],
[ 0.23535043],
[-1.49265082],
[ 1.22537862],
[-0.46499134],
[-0.23744759],
[ 1.40520679],
[ 0.95882677],
[ 1.66996413],
[-0.37515955],
[-0.75826444],
[-1.45945337],
[-0.63995369]])
因此,您可以调用squeze
来生成一个序列,也可以选择df中的唯一列,以避免出现错误:
pred = clf.fit(X_trainN,y_trainN[0]).predict(X_testN)
pred = clf.fit(X_trainN,y_trainN.squeeze()).predict(X_testN)
因此,我们可以认为,对于只有一个列的df,它应该返回一些可以被强制到numpy数组中的东西,或者numpy没有正确地调用数组属性,但实际上,您应该传递一个序列或从df中选择列作为参数
我想用内核机对数据集进行分类。目标类有5个不同的值,我想一次性编码它。之后,我有5个目标列。我做了5次训练,每次目标列一次。现在我想分类一个新的样本。我用我得到的5个Trainig模型对样品进行了5次分类。最后,我看哪一个预测在5个预测中具有最大值,然后我根据具有最大预测的类对样本进行分类。我不确定我做的是对的。我怎样才能以正确的方式做到这一点?
假设我们有这样的代码: 此代码在最新的 GCC 9.2、叮当 9.2 和 MSVC 19.22 上编译。 但当我将默认析构函数更改为GCC返回错误
本文向大家介绍在机器学习中,为何要经常对数据归一化?相关面试题,主要包含被问及在机器学习中,为何要经常对数据归一化?时的应答技巧和注意事项,需要的朋友参考一下 归一化可以: 归一化后加快了梯度下降求最优解的速度(两个特征量纲不同,差距较大时,等高线较尖,根据梯度下降可能走之字形,而归一化后比较圆走直线) 归一化有可能提高精度 (一些分类器需要计算样本之间的距离,如果一个特征值域范围非常大,那么距离
问题内容: 我正在与。我正在尝试向代码中添加,以在元素变为可见时通过xpath检测元素。为了获得一些Java帮助,我寻找了源代码, 但找不到它。我在发行版中找到了源代码。我下载并找到并添加到我的。在的帮助下,我只需将代码复制粘贴到我的代码中,然后更改变量名。 文档中的示例代码如下: 但是,当我实现此代码时,只需复制粘贴即可: 我在Class 上遇到错误 这是我的进口清单: 有人可以帮我吗? 更新资
问题内容: 我以大熊猫数据着称。它有很多缺失。不能逐行或逐行删除。插补中位数,均值或最频繁的值也不是一种选择(因此插补和/或不幸的是,不能做到这一点)。 我碰到了一个看起来很整洁的程序包(您可以在这里找到它)。但是我有一些问题。 这是我的工作: 但是,某种程度上是单个矢量,而不是填充的数据帧。如何获得带有插补的数据框? 我意识到,需要一个。因此,我使用将转换为一个数组。 输出是缺少列标签的数据框。
它实际做的是创建另一个列表,遍历旧列表,并将元素始终添加到新列表的head。 但是,当我决定重新实现这个想法而不查看这段代码时,我更改了的位置,并将其放在之后 我的问题是这真的有什么不同吗?我无法理解其中的原因,因为毕竟您在遍历旧列表。为什么要求在*temp声明后立即执行?