SciKit-учить преобразование для классификации - PullRequest
0 голосов
/ 07 апреля 2020

я впервые подхожу к библиотеке Scikit. Итак, у меня есть этот набор данных, который уже «очищен» и называется dedups:

print(dedups)

 name  price vehicleType  \
1                                    A5_Sportback_2.7_Tdi  18300       coupe   
2                          Jeep_Grand_Cherokee_"Overland"   9800         suv   
3                                      GOLF_4_1_4__3TÜRER   1500  kleinwagen   
4                          Skoda_Fabia_1.4_TDI_PD_Classic   3600  kleinwagen   
5       BMW_316i___e36_Limousine___Bastlerfahrzeug__Ex...    650   limousine   
...                                                   ...    ...         ...   
371520                                       turbo_defekt   3200   limousine   
371524              Smart_smart_leistungssteigerung_100ps   1199      cabrio   
371525                 Volkswagen_Multivan_T4_TDI_7DC_UY2   9200         bus   
371526                             VW_Golf_Kombi_1_9l_TDI   3400       kombi   
371527       BMW_M135i_vollausgestattet_NP_52.720____Euro  28990   limousine   

        yearOfRegistration    gearbox  powerPS         model  kilometer  \
1                     2011    manuell      190  not-declared     125000   
2                     2004  automatik      163         grand     125000   
3                     2001    manuell       75          golf     150000   
4                     2008    manuell       69         fabia      90000   
5                     1995    manuell      102           3er     150000   
...                    ...        ...      ...           ...        ...   
371520                2004    manuell      225          leon     150000   
371524                2000  automatik      101        fortwo     125000   
371525                1996    manuell      102   transporter     150000   
371526                2002    manuell      100          golf     150000   
371527                2013    manuell      320       m_reihe      50000   

        monthOfRegistration fuelType       brand notRepairedDamage  namelen  
1                         5   diesel        audi                ja       20  
2                         8   diesel        jeep      not-declared       30  
3                         6   benzin  volkswagen              nein       18  
4                         7   diesel       skoda              nein       30  
5                        10   benzin         bmw                ja       50  
...                     ...      ...         ...               ...      ...  
371520                    5   benzin        seat                ja       12  
371524                    3   benzin       smart              nein       37  
371525                    3   diesel  volkswagen              nein       34  
371526                    6   diesel  volkswagen      not-declared       22  
371527                    8   benzin         bmw              nein       44  

[304133 rows x 13 columns]

Итак, во-первых, моя зависимая переменная - цена. Затем я применил DataFrameMapper для преобразования по набору данных

labeled = DataFrameMapper([
    (['name', 'gearbox', 'notRepairedDamage', 'model', 'brand', 'fuelType', 'vehicleType'], 
      OneHotEncoder(handle_unknown='ignore')), 
      ( ['yearOfRegistration','powerPS','kilometer','monthOfRegistration', 'namelen'], None)
                          ])

labeled_target = DataFrameMapper([
    (['price'], OneHotEncoder(handle_unknown='ignore'))
    ])
labeled.fit(dedups)
labeled_target.fit(dedups)

Так что теперь я продолжу, создав свои данные для поезда / теста. И я делаю так:

X = labeled.transform(dedups.loc[:, dedups.columns != "price"])
Y = labeled_target.transform(dedups[['price']])

И вот в чем проблема: если я запускаю код только для Y, все в порядке, но если я запускаю и XI, я получаю эту ошибку:

---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-52-6ec8ab95697a> in <module>
----> 1 X = labeled.transform(dedups.loc[:, dedups.columns != "price"])
      2 #Y = labeled_target.transform(dedups[['price']])
      3 print(Y)
      4 
      5 #matplotlib.rcParams['figure.figsize'] = (12.0, 6.0)

~\Anaconda\Anaconda3\lib\site-packages\sklearn_pandas\dataframe_mapper.py in transform(self, X)
    375         X       the data to transform
    376         """
--> 377         return self._transform(X)
    378 
    379     def fit_transform(self, X, y=None):

~\Anaconda\Anaconda3\lib\site-packages\sklearn_pandas\dataframe_mapper.py in _transform(self, X, y, do_fit)
    343             # with sparse=True
    344             if not self.sparse:
--> 345                 stacked = stacked.toarray()
    346         else:
    347             stacked = np.hstack(extracted)

~\Anaconda\Anaconda3\lib\site-packages\scipy\sparse\compressed.py in toarray(self, order, out)
   1022         if out is None and order is None:
   1023             order = self._swap('cf')[0]
-> 1024         out = self._process_toarray_args(order, out)
   1025         if not (out.flags.c_contiguous or out.flags.f_contiguous):
   1026             raise ValueError('Output array must be C or F contiguous')

~\Anaconda\Anaconda3\lib\site-packages\scipy\sparse\base.py in _process_toarray_args(self, order, out)
   1184             return out
   1185         else:
-> 1186             return np.zeros(self.shape, dtype=self.dtype, order=order)
   1187 
   1188 

MemoryError: 

И я не могу понять проблему. Не могли бы вы мне помочь?

...