尝试使用 DBSCAN 绘制异常值

Trying to plot outliers using DBSCAN

我从来都不擅长 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()

这是我的结果。

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

可能一种颜色用于离群值,另一种颜色用于非离群值。我只是想学习这个练习中的概念。我正在尝试遵循 link.

中的示例

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

我正在使用这个数据源。

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

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

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