Ich versuche herauszufinden, wie mit verschiedenen Distanzmetriken zu implementieren. Ich stolperte über skbio
und sklearn
mit Implementierungen. Ich verstehe nicht, warum die Implementierung sklearn
jedes Mal anders ist, während skbio
das gleiche ist? Gibt es einen Grad der Zufälligkeit zu Multidimensional Scaling
und insbesondere ? Ich sehe, dass alle Cluster sehr ähnlich sind, aber warum unterscheiden sie sich? Implementiere ich das richtig?Warum ist `sklearn.manifold.MDS` zufällig, wenn` skbio's pcoa` nicht ist?
Lauf Principal Coordinate Analysis
mit Scikit-bio
(d Skbio
) immer die gleichen Ergebnisse erzielen lassen:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn import decomposition
import seaborn as sns; sns.set_style("whitegrid", {'axes.grid' : False})
import skbio
from scipy.spatial import distance
%matplotlib inline
np.random.seed(0)
# Iris dataset
DF_data = pd.DataFrame(load_iris().data,
index = ["iris_%d" % i for i in range(load_iris().data.shape[0])],
columns = load_iris().feature_names)
n,m = DF_data.shape
# print(n,m)
# 150 4
Se_targets = pd.Series(load_iris().target,
index = ["iris_%d" % i for i in range(load_iris().data.shape[0])],
name = "Species")
# Scaling mean = 0, var = 1
DF_standard = pd.DataFrame(StandardScaler().fit_transform(DF_data),
index = DF_data.index,
columns = DF_data.columns)
# Distance Matrix
Ar_dist = distance.squareform(distance.pdist(DF_data, metric="braycurtis")) # (n x n) distance measure
DM_dist = skbio.stats.distance.DistanceMatrix(Ar_dist, ids=DF_standard.index)
PCoA = skbio.stats.ordination.pcoa(DM_dist)
Jetzt mit sklearn
‚s Multidimensional Scaling
:
from sklearn.manifold import MDS
fig, ax=plt.subplots(ncols=5, figsize=(12,3))
for rs in range(5):
M = MDS(n_components=2, metric=True, random_state=rs, dissimilarity='precomputed')
A = M.fit(Ar_dist).embedding_
ax[rs].scatter(A[:,0],A[:,1], c=[{0:"b", 1:"g", 2:"r"}[t] for t in Se_targets])
Die Terminologie MDS ist ziemlich verwirrend finden Sie [hier] (http://stats.stackexchange.com/a/14017) eine gute Beschreibung der Unterschiede zu finden . – jorgeca