Как создать синтетические данные в заданном диапазоне, используя sklearn.datasets.make_classification? - PullRequest
1 голос
/ 30 октября 2019

Я хочу создать синтетические данные для задачи классификации. Я использую make_classification метод sklearn.datasets. Я хочу, чтобы данные находились в определенном диапазоне, скажем, [80, 155], но он генерирует отрицательные числа.

Я пробовал множество комбинаций параметров scale и class_sep, но не получил желаемоговыход.

import pandas as pd
from sklearn.datasets import make_classification
weight = [0.2, 0.37, 0.21, 0.04, 0.11, 0.05, 0.02]

X, y = make_classification(n_samples=100, n_features=3,
            n_informative=3, n_redundant=0, n_repeated=0, 
            n_classes=7, n_clusters_per_class=1, weights=weight,
            class_sep=1,shuffle=True, random_state=41, scale= 1)

pd.DataFrame(X).describe()

Выход

Выход должен быть в определенном диапазоне, но он выбирает случайные значения со стандартным отклонением около 1,33.

1 Ответ

3 голосов
/ 30 октября 2019

Вы можете использовать MinMaxScaler (см. документы ).

Просто запустите:

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(80, 155))
X = scaler.fit_transform(X)
y = scaler.fit_transform(y)

Обратите внимание, что этот скейлер будет обучен один раз для X и одиндля тебя.

...