Как предварительно обработать большой массив данных pandas в Python для k-средних - PullRequest
0 голосов
/ 23 января 2019

Я хочу найти значение 'k' в алгоритме k-средних, используя метод локтя. Я использую питона и панд. Мой файл .csv составляет около 500 МБ (содержит почти 1 млн. Строк). Проблема в том, что из-за MinMaxScaler все конвертируется в float64, и, таким образом, я получаю MemoryError (попытался прочитать несколько строк, и это сработало).

До сих пор я пытался запустить его локально (MacBook Pro - 16 ГБ DDR4) и на экземпляре EC2 (бесплатный уровень) как в виде файла python, так и в pyspark (во всех случаях я получил MemoryError). Что касается pyspark (так как я не эксперт) я создал SparkSession и создал main и if __name__==__main__.

import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
data = pd.read_csv('prosepexergasia.csv',low_memory = False)

categorical_features = ['vendor_name', 'ship_from', 'market', 
'category_cl' ]
continuous_features = ['price']

for col in categorical_features:
    dummies = pd.get_dummies(data[col], prefix=col)
    data = pd.concat([data, dummies], axis=1)
    data.drop(col, axis=1, inplace=True)

mms = MinMaxScaler()
mms.fit(data)
data_transformed = mms.transform(data)

Sum_of_squared_distances = []
K = range(1,15)
for k in K:
    km = KMeans(n_clusters=k)
    km = km.fit(data_transformed)
    Sum_of_squared_distances.append(km.inertia_) 

Мой вопрос: как мне решить эту проблему? Должен ли я просто запустить «больший» экземпляр EC2 (с большим объемом памяти) и запустить его как pandas dataframe? Могу ли я распространять работу в Python? Должен ли я сосредоточиться на pySpark? Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...