gpt4 book ai didi

Python:如何找到分隔两个不同集群的值?

转载 作者:行者123 更新时间:2023-12-01 16:00:24 26 4
gpt4 key购买 nike

我正在应用一种无监督学习算法,使用 OneClass SVM 方法构建异常检测,然后绘制它以可视化它的外观。

我有 2 个簇:一个红色,另一个蓝色。红色簇对应 1(不是异常),蓝色簇对应值为 -1(异常)。

我想要的是获得两个集群分离的确切值。

我的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import preprocessing

data = pd.read_excel('gpmd.xlsx', header = 0)
X = data.loc[:, ['ContextID','BacksGas_Flow_sccm']]

min_max_scaler = preprocessing.MinMaxScaler()
X_minmax = min_max_scaler.fit_transform(X.values[:,[1]])

from sklearn.svm import OneClassSVM

ocsvm = OneClassSVM(nu = 0.05, kernel = 'rbf', gamma = 'scale')
y_ocsvm1 = ocsvm.fit_predict(X_minmax[:,[0]])

plt.scatter(X.values[y_ocsvm1 == 1, 0], X_minmax[y_ocsvm1 == 1, 0], c = 'red', label = 'cluster1')
plt.scatter(X.values[y_ocsvm1 == -1, 0], X_minmax[y_ocsvm1 == -1, 0], c = 'blue', label = 'cluster2')
plt.ticklabel_format(useOffset=False)
plt.yticks(np.arange(min(X_minmax[:,[0]]), max(X_minmax[:,[0]]), 0.03))
plt.legend()
plt.show()

我运行这段代码后得到的图是:

scatter plot

只看图片,我们可以粗略地说,红色簇与蓝色簇的分离值介于 0.72 和 0.75 之间。我想知道是否有办法知道这两个集群分开的确切值。

编辑 1

在下图中,我们可以看到一条绿线(粗略地)分隔了两个集群,我想找到这样一条线及其对应的 y 轴值 Picture 2

最佳答案

@Justice_lords 的建议正是我要找的。 Decision_function() 对我有用。

关于Python:如何找到分隔两个不同集群的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55399430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com