Scikit-learn train_test_split с индексами

Как получить исходные индексы данных при использовании train_test_split ()?

У меня есть следующее

from sklearn.cross_validation import train_test_split import numpy as np data = np.reshape(np.randn(20),(10,2)) # 10 training examples labels = np.random.randint(2, size=10) # 10 labels x1, x2, y1, y2 = train_test_split(data, labels, size=0.2) 

Но это не дает индексов исходных данных. Один из способов – добавить индексы к данным (например, data = [(i, d) for i, d in enumerate(data)] ), а затем передать их в train_test_split а затем снова развернуть. Есть ли более чистые решения?

2 Solutions collect form web for “Scikit-learn train_test_split с индексами”

Scikit учится хорошо играть с Pandas, поэтому я предлагаю вам использовать его. Вот пример:

 In [1]: import pandas as pd import numpy as np from sklearn.cross_validation import train_test_split data = np.reshape(np.random.randn(20),(10,2)) # 10 training examples labels = np.random.randint(2, size=10) # 10 labels In [2]: X = pd.DataFrame(data) y = pd.Series(labels) In [3]: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=0) In [4]: X_test Out[4]: 0 1 2 -1.39 -1.86 8 0.48 -0.81 4 -0.10 -1.83 In [5]: y_test Out[5]: 2 1 8 1 4 1 dtype: int32 

Вы можете напрямую вызвать любые функции scikit в DataFrame / Series, и это сработает.

Предположим, вы хотели сделать LogisticRegression, вот как вы могли бы получить коэффициенты красивым способом:

 In [6]: from sklearn.linear_model import LogisticRegression model = linear_model.LogisticRegression() model = model.fit(X_train, y_train) # Retrieve coefficients: index is the feature name ([0,1] here) df_coefs = pd.DataFrame(model.coef_[0], index=X.columns, columns = ['Coefficient']) df_coefs Out[6]: Coefficient 0 0.076987 1 -0.352463 

Вы можете использовать pandas dataframes или series, как сказал Жюльен, но если вы хотите ограничить себя до numpy, вы можете передать дополнительный массив индексов:

 from sklearn.cross_validation import train_test_split import numpy as np data = np.reshape(np.random.randn(20),(10,2)) # 10 training examples labels = np.random.randint(2, size=10) # 10 labels indices = np.arange(data.shape[0]) x1, x2, y1, y2, idx1, idx2 = train_test_split(data, labels, indices, test_size=0.2) 
  • Enthought Python, Sage или другие (в Unix-кластерах)
  • Минимизация функций с большими градиентами с помощью `scipy.optimize.minimize`
  • Имеет ли scipy.interpolate.interp1d проблемы с десятичными значениями, ведущими значения x?
  • Как установить h5py (+ numpy + libhdf5 + ...) как не root в системе Debian Linux
  • Python Numpy или Pandas Linear Interpolation для значений, связанных с датой
  • Найти корень функции в заданном интервале
  • Есть ли scipy / numpy альтернатива R nrd0?
  • Нет модуля с именем scipy.stats - Почему, несмотря на то, что scipy установлен
  •  
    Interesting Posts for Van-Lav

    Как узнать программно, если зарегистрировано доменное имя или нет

    отрицательное выражение lookahead не работает в python

    Как установить M2Crypto на Ubuntu?

    Как fillna () со значением 0 после вызова resample?

    Python эквивалент вывода файла трубопровода на gzip в Perl, используя канал

    Как связать собственные события в текстовом виджете Tkinter после того, как он будет привязан текстовым виджетами?

    Файл соленья слишком большой для загрузки

    построение 2D-матрицы в python, код и наиболее полезную визуализацию

    Ошибка импорта модуля python в Django

    Как объединить эти две строки кода в один (Python 3.X)?

    математический синтаксис, написанный на python

    Итерацию над массивом дважды (декартово произведение), но рассмотрим только половину элементов

    Pandon Pandas – удаление строк из DataFrame на основе ранее полученного подмножества

    В Python, почему функция может изменять некоторые аргументы, воспринимаемые вызывающим, но не другие?

    Как я могу объединить два списка и отсортировать их в «линейном» времени?

    Python - лучший язык программирования в мире.