如何在MachineLearning中使用sklearn将时间戳记数据类型更改为浮点型

时间:2018-11-08 14:44:28

标签: python python-3.x machine-learning scikit-learn timestamp

我有一个包含列时间戳的数据集。当我尝试拟合它时,在此行上出现错误:

X_train = sc_X.fit_transform(X_train)
  

ValueError:无法将字符串转换为float:'02:45.5'

Dataset download link

完整代码:

# K-Means Clustering
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('E:\\project-hunger\\task-data.csv')
X = dataset.iloc[:, [1,3]].values
dataset.dtypes
X = dataset.iloc[:, :4].values
X

y = dataset.iloc[:, [1,3]].values
y

# Splitting the dataset into the Training set and Test set
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train) **#here i am getting error**
X_test = sc_X.transform(X_test)
sc_y = StandardScaler()
y_train = sc_y.fit_transform(y_train)

# Using the elbow method to find the optimal number of clusters for our data
from sklearn.cluster import KMeans
 #wcss is within cluster sum of square
wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)
    kmeans.fit(X)
    wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()

# Fitting K-Means to the dataset
kmeans = KMeans(n_clusters = 5, init = 'k-means++', random_state = 42)
y_kmeans = kmeans.fit_predict(X)

# Visualising the clusters
plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label = 'Cluster 1')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label = 'Cluster 2')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label = 'Cluster 3')
plt.scatter(X[y_kmeans == 3, 0], X[y_kmeans == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4')
plt.scatter(X[y_kmeans == 4, 0], X[y_kmeans == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 300, c = 'yellow', label = 'Centroids')
plt.title('Clusters of customers')
plt.xlabel('Annual Income (k$)')
plt.ylabel('Spending Score (1-100)')
plt.legend()
plt.show()

错误跟踪:

from sklearn.preprocessing import StandardScaler sc_X = StandardScaler()

X_train = sc_X.fit_transform(X_train) Traceback (most recent call last):

  File "<ipython-input-9-84842ef438ba>", line 1, in <module>
    X_train = sc_X.fit_transform(X_train)

  File "C:\Users\SHEKH FIROZ ALAM\Anaconda3\lib\site-packages\sklearn\base.py", line 517, in fit_transform
    return self.fit(X, **fit_params).transform(X)

  File "C:\Users\SHEKH FIROZ ALAM\Anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 590, in fit
    return self.partial_fit(X, y)

  File "C:\Users\SHEKH FIROZ ALAM\Anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 612, in partial_fit
    warn_on_dtype=True, estimator=self, dtype=FLOAT_DTYPES)

  File "C:\Users\SHEKH FIROZ ALAM\Anaconda3\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: '16:09.0'**

0 个答案:

没有答案