我正在尝试使用 train_test_split 策略微调我的 sklearn 模型。我知道GridSearchCV执行参数调整的能力,但是,它与使用交叉验证策略相关,我想使用 train_test_split 策略进行参数搜索,因为训练速度对我的情况很重要,我更喜欢简单train_test_split通过交叉验证。
我可以尝试编写自己的 for 循环,但如果不利用 GridSearchCV 中使用的内置并行化,效率会很低。
有人知道如何利用 GridSearchCV 来实现这一点吗?或者提供一个不太慢的替代方案。
我正在使用 python 语言和 scikit-learn 库解决经典回归问题。这很简单:
ml_model = GradientBoostingRegressor()
ml_params = {}
ml_model.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
其中y_train是一维类数组对象
现在我想扩展任务的功能,以获得不是单个目标值,而是一组目标值。训练样本集X_train将保持不变。该问题的直观解决方案是训练多个模型,其中X_train所有模型都是相同的,但是y_train每个模型都是特定的。这绝对是一个有效的解决方案,但在我看来,效率低下。
在寻找替代方案时,我遇到了多目标回归等概念。据我了解,scikit-learn 中并未实现此类功能。如何有效解决python中的多目标回归问题?谢谢)
我在 python 中,我有包含数字的数据框,如下所示
subject_id | pH | urinecolor | blood pressure
--------------------------------------------------------
3 | 1.00 | red | high
3 | 1.15 | red | high
4 | 2.00 | yellow | low
Run Code Online (Sandbox Code Playgroud)
和绝对的。我想缩放和规范化数据框,但传统缩放给出错误无法缩放字符串我尝试以下操作,但它给我返回列表,我想缩放列并返回整个数据框以进行进一步的步骤,任何人都可以帮助我那。提前致谢
df= pd.readcsv()
dfTest =df.select_dtypes(include='number')
scaler = StandardScaler(copy=True, with_mean=True, with_std=True)
dftest= df.select_dtypes(include=np.number)
X = scaler.fit_transform(dftest)
Run Code Online (Sandbox Code Playgroud) 我在集群中训练了一个模型,下载了它(pkl 格式)并尝试在本地加载。我知道 sklearn 的 joblib 版本用于保存模型mymodel.pkl(但我不知道到底是哪个版本......)。
from sklearn.externals import joblib
print(joblib.__version__)
model = joblib.load("mymodel.pkl")
Run Code Online (Sandbox Code Playgroud)
0.13.0我本地使用sklearn的joblib版本。
这是我得到的错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-100-d0a3c42e5c53> in <module>
3 print(joblib.__version__)
4
----> 5 model = joblib.load("mymodel.pkl")
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py in load(filename, mmap_mode)
596 return load_compatibility(fobj)
597
--> 598 obj = _unpickle(fobj, filename, mmap_mode)
599
600 return obj
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py in _unpickle(fobj, filename, mmap_mode)
524 obj = None
525 try:
--> 526 obj = unpickler.load()
527 if unpickler.compat_mode:
528 warnings.warn("The file '%s' has …Run Code Online (Sandbox Code Playgroud) 我正在使用 sklearn 的内置数据集 iris 进行聚类。在 KMeans 中,我预先设置了簇的数量,但对于 DBSCAN 来说并非如此。如果不提前设置簇数,如何训练模型?
我试过:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotib inline
from sklearn.cluster import DBSCAN,MeanShift
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split,KFold,cross_val_score
from sklearn.metrics import accuracy_score,confusion_matrix
iris = load_iris()
X = iris.data
y = iris.target
dbscan = DBSCAN(eps=0.3,min_samples=10)
dbscan.fit(X,y)
Run Code Online (Sandbox Code Playgroud)
我已经被困住了!
python cluster-analysis machine-learning dbscan scikit-learn
我只是数据分析的初学者。我想使用“交叉验证网格搜索方法”来确定径向基函数 (RBF) 内核 SVM 的参数 gamma 和 C。我不知道应该将数据放在这段代码的哪里,也不知道我的数据类型是什么应该使用(训练或目标数据)?
对于SVR
import numpy as np
import pandas as pd
from math import sqrt
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
from sklearn.ensemble import AdaBoostRegressor
from sklearn.metrics import mean_squared_error,explained_variance_score
from TwoStageTrAdaBoostR2 import TwoStageTrAdaBoostR2 # import the two-stage algorithm
from sklearn import preprocessing
from sklearn import svm
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from matplotlib.colors import Normalize
from sklearn.svm import SVC
# Data import (source)
source= pd.read_csv(sourcedata) …Run Code Online (Sandbox Code Playgroud) data-visualization svm data-analysis scikit-learn grid-search
如何处理错误ValueError: Supported target types are: ('binary', 'multiclass'). Got 'continuous-multioutput' instead?
我尝试过一些东西from sklearn.utils.multiclass import type_of_target或x[0],y[0],但没有成功......
X.shape, Y.shape
Run Code Online (Sandbox Code Playgroud)
((336, 10), (336, 5))
for train, test in kfold.split(X, Y):
model = Sequential()
model.add(Dense(10, input_dim=20,
kernel_regularizer=l2(0.001),
kernel_initializer=VarianceScaling(),
activation='sigmoid'))
model.add(Dense(5,
kernel_regularizer=l2(0.01),
kernel_initializer=VarianceScaling(),
activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam',
metrics=['acc'])
model.fit(X[train], Y[train], epochs=50, batch_size=25, verbose = 0,
validation_data=(X[test], Y[test]))
scores = model.evaluate(X[test], Y[test], verbose=0)
print("%s: %.2f%%" % (model.metrics_names[2], scores[2]*100))
cvscores.append(scores[2] * 100)
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
ValueError: Supported target types are: …Run Code Online (Sandbox Code Playgroud) 我已经scikit-learn 0.23.2通过安装pip3,但是,我从我的代码中收到此错误
Traceback (most recent call last):
File "pca_iris.py", line 12, in <module>
X = StandardScaler().fit_transform(X)
NameError: name 'StandardScaler' is not defined
Run Code Online (Sandbox Code Playgroud)
我在网上搜索并看到类似的主题,但是版本是正确的,我不知道该怎么做。该行import sklearn位于脚本的顶部。
任何想法?
我有以下代码:
from sklearn.metrics import classification_report, confusion_matrix, ConfusionMatrixDisplay
...
confusion_matrix = confusion_matrix(validation_generator.classes, y_pred, normalize='all')
print(confusion_matrix)
display = ConfusionMatrixDisplay(confusion_matrix).plot()
Run Code Online (Sandbox Code Playgroud)
哪个输出:
[[0.013 0.487]
[0.001 0.499]]
Run Code Online (Sandbox Code Playgroud)
问题是.plot()执行时没有显示混淆矩阵图。
我在我的 venv 中执行pip freeze > requirements.txt,这些是我的requirements.txt中的包版本
absl-py==0.11.0
astunparse==1.6.3
autopep8==1.5.5
cachetools==4.2.1
certifi==2020.12.5
chardet==4.0.0
cycler==0.10.0
flatbuffers==1.12
gast==0.3.3
google-auth==1.27.1
google-auth-oauthlib==0.4.3
google-pasta==0.2.0
grpcio==1.32.0
h5py==2.10.0
idna==2.10
joblib==1.0.1
Keras-Preprocessing==1.1.2
kiwisolver==1.3.1
Markdown==3.3.4
matplotlib==3.2.0
numpy==1.19.5
oauthlib==3.1.0
opt-einsum==3.3.0
pandas==1.2.3
Pillow==8.1.2
protobuf==3.15.5
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.6.0
pydot==1.4.2
pyparsing==2.4.7
python-dateutil==2.8.1
pytz==2021.1
requests==2.25.1
requests-oauthlib==1.3.0
rsa==4.7.2
scikit-learn==0.24.1
scipy==1.6.1
seaborn==0.11.1
six==1.15.0
sklearn==0.0
tensorboard==2.4.1
tensorboard-plugin-wit==1.8.0
tensorflow==2.4.1
tensorflow-estimator==2.4.0
termcolor==1.1.0
threadpoolctl==2.1.0 …Run Code Online (Sandbox Code Playgroud) 我正在准备我的数据集以进行测试、训练、用 python 进行分割,但遇到了问题。我试图将 X 分配给除 Churn_Yes 之外的所有列,并将 y 仅分配给 Churn_Yes。但是,当我运行下面的代码时,它返回一个错误
类型错误:(切片(无,无,无),数组([ True, True, True, True, True, True, True, True, True,
X=df_final[:, df_final.columns != 'Churn_Yes']
y=df_final['Churn_Yes']
Run Code Online (Sandbox Code Playgroud)
认为我的 df_final 有问题,我运行 df.head() 检查结果,一切看起来正常。任何想法是什么导致了这个?
scikit-learn ×10
python ×9
pandas ×2
dbscan ×1
grid-search ×1
gridsearchcv ×1
keras ×1
pickle ×1
python-3.x ×1
sequential ×1
svm ×1