标签: scikit-learn

如何使用 GridSearchCV 通过 train_test_split 策略调整参数?

我正在尝试使用 train_test_split 策略微调我的 sklearn 模型。我知道GridSearchCV执行参数调整的能力,但是,它与使用交叉验证策略相关,我想使用 train_test_split 策略进行参数搜索,因为训练速度对我的情况很重要,我更喜欢简单train_test_split通过交叉验证。

我可以尝试编写自己的 for 循环,但如果不利用 GridSearchCV 中使用的内置并行化,效率会很低。

有人知道如何利用 GridSearchCV 来实现这一点吗?或者提供一个不太慢的替代方案。

python scikit-learn train-test-split gridsearchcv

0
推荐指数
1
解决办法
2006
查看次数

使用 scikit-learn 进行多目标回归

我正在使用 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 machine-learning scikit-learn

0
推荐指数
1
解决办法
5946
查看次数

使用数字和分类缩放数据框

我在 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)

python python-3.x pandas scikit-learn

0
推荐指数
1
解决办法
5210
查看次数

无法使用 sklearn 的 joblib 加载 pickle 文件

我在集群中训练了一个模型,下载了它(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)

python pickle scikit-learn

0
推荐指数
1
解决办法
2万
查看次数

使用 DBSCAN 进行聚类:如果不提前设置聚类数量,如何训练模型?

我正在使用 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

0
推荐指数
1
解决办法
7349
查看次数

SVR超参数选择和可视化

我只是数据分析的初学者。我想使用“交叉验证网格搜索方法”来确定径向基函数 (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

0
推荐指数
1
解决办法
4395
查看次数

错误:支持的目标类型为:('binary', 'multiclass')

如何处理错误ValueError: Supported target types are: ('binary', 'multiclass'). Got 'continuous-multioutput' instead

我尝试过一些东西from sklearn.utils.multiclass import type_of_targetx[0],y[0],但没有成功......

X 的可视化:

在此输入图像描述

Y 的可视化:

在此输入图像描述

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)

python neural-network sequential scikit-learn keras

0
推荐指数
1
解决办法
8839
查看次数

名称“StandardScaler”未定义

我已经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位于脚本的顶部。

任何想法?

python scikit-learn

0
推荐指数
1
解决办法
3万
查看次数

ConfusionMatrixDisplay(confusion_matrix).plot() 不显示任何内容

我有以下代码:

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 confusion-matrix scikit-learn

0
推荐指数
1
解决办法
5234
查看次数

类型错误:(切片(无,无,无),数组([ True, True, True, True, True, True, True, True, True,

我正在准备我的数据集以进行测试、训练、用 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() 检查结果,一切看起来正常。任何想法是什么导致了这个?

python pandas scikit-learn

0
推荐指数
1
解决办法
339
查看次数