【问题标题】:Trying to plot outliers using DBSCAN尝试使用 DBSCAN 绘制异常值
【发布时间】:2020-10-28 07:44:45
【问题描述】:

我从来都不擅长 Python 绘图概念,现在我显然仍然缺少一些新东西。

这是我的代码。

import pandas as pd
import matplotlib.pyplot as plt
import sys
from numpy import genfromtxt
from sklearn.cluster import DBSCAN

data = pd.read_csv('C:\\Users\\path_here\\wine.csv')
data

# Reading in 2D Feature Space
model = DBSCAN(eps=0.9, min_samples=10).fit(data)


array_flavanoids = data.iloc[:, 2]

# Slicing array
array_colorintensity = data.iloc[:, 3]

# Scatter plot function
colors = model.labels_
plt.scatter(array_flavanoids, array_colorintensity, c=colors, marker='o')
plt.xlabel('Concentration of flavanoids', fontsize=16)
plt.ylabel('Color intensity', fontsize=16)
plt.title('Concentration of flavanoids vs Color intensity', fontsize=20)
plt.show()

这是我的结果。

我预计异常值的颜色与非异常值的颜色不同。所以,像这样。

也许一种颜色用于异常值,另一种颜色用于非异常值。我只是想在这个练习中学习这个概念。我正在尝试遵循此链接中的示例。

https://towardsdatascience.com/outlier-detection-python-cd22e6a12098

我正在使用这个数据源。

https://www.kaggle.com/uciml/red-wine-quality-cortez-et-al-2009

【问题讨论】:

  • 噪声点(=异常值,即无法分配给任何集群的数据点)用-1 标记。显然,您的 DBSCAN 参数创建了一个模型,将所有数据点分配给同一组。您的示例不可重现,因为绘制的数据不是来自指定的数据集。

标签: python python-3.x matplotlib dbscan


【解决方案1】:

我正在测试不同的数据集。
我得到了这个工作。

from sklearn.cluster import DBSCAN

def dbscan(X, eps, min_samples):
    ss = StandardScaler()
    X = ss.fit_transform(X)
    db = DBSCAN(eps=eps, min_samples=min_samples)
    db.fit(X)
    y_pred = db.fit_predict(X)
    plt.scatter(X[:,0], X[:,1],c=y_pred, cmap='Paired')
    plt.title("DBSCAN")
        
dbscan(data, eps=.5, min_samples=5)

我发现这是一个很棒的资源。

https://medium.com/@plog397/functions-to-plot-kmeans-hierarchical-and-dbscan-clustering-c4146ed69744

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 2020-04-03
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2014-08-15
    • 2020-11-26
    • 1970-01-01
    • 2019-08-02
    相关资源
    最近更新 更多