ValueError: не удалось преобразовать строку в число с плавающей точкой: при чтении набора данных .csv - PullRequest
0 голосов
/ 11 июня 2019

Почему я продолжаю получать эту ошибку?

Я подозреваю, что это потому, что get_dummies не работает для категориальных данных?

Должен ли я сначала пометить кодирование моих данных?

Любая помощь приветствуется

import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

data = pd.read_csv(r'C:\Users\charl\Downloads\TelcoChurn.csv')
data.head()

categorical_features = ['customerID', 'gender', 'Partner', 'Dependents', 'PhoneService', 'MultipleLines', 'InternetService', 
                        'OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport', 'SeniorCitizen',
                        'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling', 'PaymentMethod', 'Churn']
continuous_features = ['MonthlyCharges', 'TotalCharges', 'tenure']

data[continuous_features].describe()

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)

data.head()

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_)

plt.plot(K, Sum_of_squared_distances, 'bx-')
plt.xlabel('k')
plt.ylabel('Sum_of_squared_distances')
plt.title('Elbow Method for Optimal k')
plt.show()

Надеюсь, что это запрошенная трассировка.

Спасибо за вашу помощь

Наполнитель Наполнитель Наполнитель Наполнитель Наполнитель

In [55]: runfile('C:/Users/charl/AppData/Roaming/SPB_Data/.spyder-py3/temp.py', wdir='C:/Users/charl/AppData/Roaming/SPB_Data/.spyder-py3')
Traceback (most recent call last):

  File "<ipython-input-55-acad0a080800>", line 1, in <module>
    runfile('C:/Users/charl/AppData/Roaming/SPB_Data/.spyder-py3/temp.py', wdir='C:/Users/charl/AppData/Roaming/SPB_Data/.spyder-py3')

  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/charl/AppData/Roaming/SPB_Data/.spyder-py3/temp.py", line 31, in <module>
    mms.fit(data)

  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\sklearn\preprocessing\data.py", line 308, in fit
    return self.partial_fit(X, y)

  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\sklearn\preprocessing\data.py", line 334, in partial_fit
    estimator=self, dtype=FLOAT_DTYPES)

  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\sklearn\utils\validation.py", line 433, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)

ValueError: could not convert string to float:
...