AttributeError: 'OPTICS' object has no attribute 'core_sample_indices_'
时间: 2023-06-22 07:30:26 浏览: 76
这个错误提示表明OPTICS类没有core_sample_indices_属性。在scikit-learn 0.20版本之前,是可以通过`core_sample_indices_`属性获取OPTICS算法的核心点的。但是在0.20版本之后,这个属性被废弃了。
如果你使用的是0.20版本或更高版本的scikit-learn,可以通过下面的代码获取OPTICS算法的核心点:
```python
import numpy as np
from sklearn.cluster import OPTICS, cluster_optics_dbscan
# 生成随机数据集
np.random.seed(0)
n_points_per_cluster = 250
C1 = [-5, -2] + .8 * np.random.randn(n_points_per_cluster, 2)
C2 = [4, -1] + .1 * np.random.randn(n_points_per_cluster, 2)
C3 = [1, -2] + .2 * np.random.randn(n_points_per_cluster, 2)
C4 = [-2, 3] + .3 * np.random.randn(n_points_per_cluster, 2)
C5 = [3, -2] + .3 * np.random.randn(n_points_per_cluster, 2)
C6 = [5, 6] + .2 * np.random.randn(n_points_per_cluster, 2)
X = np.vstack((C1, C2, C3, C4, C5, C6))
# 进行OPTICS聚类
optics_model = OPTICS(min_samples=50, xi=.05, min_cluster_size=.05)
optics_model.fit(X)
# 根据聚类结果获取核心点
core_samples_mask = np.zeros_like(optics_model.labels_, dtype=bool)
core_samples_mask[optics_model.ordering_] = True
core_samples = optics_model._index[core_samples_mask]
print(core_samples)
```
在这个例子中,我们使用了`optics_model._index`来获取数据中每个点的索引,然后使用`core_samples_mask`获取核心点的索引。最后,通过`core_samples`获取核心点的坐标。
需要注意的是,使用内部属性时需要注意版本的兼容性,可能会存在不同版本之间的差异。另外,使用`_`开头的内部属性是不建议的,因为它们可能会在未来的版本中发生改变。