我有下面几列的数据框;日期和湿度:
data = {'Date':['09:00:00', '10:00:00', '10:00:00', '12:00:00', '13:00:00', '14:00:00', '15:00:00', '16:00:00'], 'Humidity':[60, 71, 59, 18, 50, 21, 119, 78]}
df = pd.DataFrame(data)
Date Humidity
0 09:00:00 60
1 10:00:00 71
2 10:00:00 59
3 12:00:00 18
4 13:00:00 50
5 14:00:00 21
6 15:00:00 119
7 16:00:00 78
这是我拥有的数据框的一小部分。我想使用DBSCAN在“湿度”中找到异常值。为了获得最佳的eps参数值,我决定选择弯头。到目前为止,我了解到弯头点使用的是群集内各点之间的平均距离。但问题是在我的情况下,我仅使用一维数组,即湿度。在这种情况下,我必须在哪两个点之间寻找距离?在湿度和湿度之间?
肘点也可以算作kmeans中的簇数。所以我用下面的代码找到eps。但是在kmeans.fit(df [[''Humidity','Humidity']])中,我使用的是湿度与湿度
from sklearn.cluster import KMeans
new_list = []
for i in range(1, 6):
kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)
kmeans.fit(df[['Humidity','Humidity']])
new_list.append(kmeans.inertia_)
plt.plot(range(1, 6), new_list)
plt.grid(True)
plt.show()
它给了我以下情节:
这是否意味着eps的最优值为3?如何使用一维阵列查找eps?
都不是用于选择一维数据中的异常值的合适方法。相反,请使用经典的离群值检测方法,例如z分数。