Инкрементальный PCA с большим CSV - PullRequest
0 голосов
/ 18 апреля 2020

Я намерен применить inremntal PCA к большому файлу, поэтому я получил этот SO-поток в качестве справки Python PCA на матрице слишком большой, чтобы поместиться в памяти

в соответствии с этим Я пытался обработать мой пример файла с этим кодом

from sklearn.decomposition import IncrementalPCA
import csv
import sys
import numpy as np
import pandas as pd

chunksize_ = 3 * 100
dimensions = 300
cols = [i for i in range(1, 5502)]

reader = pd.read_csv("D:\PHD\obranking\\demo.csv", usecols=cols, chunksize = chunksize_)
sklearn_pca = IncrementalPCA(n_components=dimensions)

for chunk in reader:
    #y = chunk.pop('y')
    sklearn_pca.partial_fit(chunk)

# Computed mean per feature
mean = sklearn_pca.mean_
# and stddev
stddev = np.sqrt(sklearn_pca.var_)

Xtransformed = None
for chunk in pd.read_csv("D:\PHD\obranking\\demo.csv",usecols=cols, chunksize = chunksize_):
    #y = chunk.pop('y')
    Xchunk = sklearn_pca.transform(chunk)
    if Xtransformed == None:
        Xtransformed = Xchunk
    else:
        Xtransformed = np.vstack((Xtransformed, Xchunk))'

Но получая ошибку как

    "C:\Users\Rahul Gupta\PycharmProjects\CSVLearn\venv\Scripts\python.exe" "C:/Users/Rahul Gupta/PycharmProjects/CSVLearn/PCALearn.py"
C:\Users\Rahul Gupta\PycharmProjects\CSVLearn\venv\lib\site-packages\sklearn\decomposition\_incremental_pca.py:309: RuntimeWarning: Mean of empty slice.
  explained_variance[self.n_components_:].mean()
C:\Users\Rahul Gupta\PycharmProjects\CSVLearn\venv\lib\site-packages\numpy\core\_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars
  ret = ret.dtype.type(ret / rcount)

Process finished with exit code 0

, мне кажется, что 0-й столбец, который является меткой класса, имеет доступ, который имеет один из классов метки как BW. Но используемые протоколы использовались для особого выбора столбцов в диапазоне индекса (1, 5502), хотя в CSV они имеют строки в качестве своих имен. Я также прокомментировал y = chunk.pop('y'), так как не смог понять его использование по предоставленной ссылке. Пожалуйста, расскажите мне, что делает эта строка кода, а также в чем проблема с моим кодом.

...