Кластеризация по нескольким документам Excel с одинаковыми столбцами в Python - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть задача, которая требует кластеризации данных из нескольких документов Excel с возможностью поиска слов, из которых были взяты данные документа.

Проблема в том, что я не представляю, как извлечь данные из этих файлов и запомнить, из каких файлов были извлечены данные.

Допустим, у меня есть 3 столбца в каждом документе Excel (col_1, col_2, col_3), и мне нужно кластеризовать данные.

Я искал похожую проблему в inte rnet , но без результатов ..

Любая помощь будет полезна! Заранее спасибо за ваше время и помощь!

1 Ответ

0 голосов
/ 10 апреля 2020

Звучит так, как будто вы хотите объединить несколько файлов Excel в один источник данных и передать их в какую-то кластеризацию al go. Это правильно?

import pandas as pd
import numpy as np

import glob
glob.glob("C:\\your_path_to_all_files\\*.xlsx")

all_data = pd.DataFrame()
for f in glob.glob("C:\\your-path_to_all_files\\*.xlsx"):
    df = pd.read_excel(f)
    all_data = all_data.append(df,ignore_index=True)
    print(all_data)
    df = pd.DataFrame(all_data)
    # df.shape
    # df.to_excel("C:\\your_path_to_all_files\\final.xlsx", sheet_name='Sheet1')
    # only if you want to save the merged files into a new Excel file...

Запустите кластеризацию KMeans ниже. , .

Поскольку вы не включили набор данных, я дам вам простой пример для изучения.

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# %matplotlib inline
from sklearn import datasets#Iris Dataset
iris = datasets.load_iris()
X = iris.data#KMeans
km = KMeans(n_clusters=3)
km.fit(X)
km.predict(X)
labels = km.labels_#Plotting
fig = plt.figure(1, figsize=(7,7))
ax = Axes3D(fig, rect=[0, 0, 0.95, 1], elev=48, azim=134)
ax.scatter(X[:, 3], X[:, 0], X[:, 2],
          c=labels.astype(np.float), edgecolor="k", s=50)
ax.set_xlabel("Petal width")
ax.set_ylabel("Sepal length")
ax.set_zlabel("Petal length")
plt.title("K Means", fontsize=14)

enter image description here

###################################################

from sklearn.mixture import GaussianMixture
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
#%matplotlib inline
from sklearn import datasets#Iris Dataset
iris = datasets.load_iris()
X = iris.data#Gaussian Mixture Model
gmm = GaussianMixture(n_components=3)
gmm.fit(X)
proba_lists = gmm.predict_proba(X)#Plotting
colored_arrays = np.matrix(proba_lists)
colored_tuples = [tuple(i.tolist()[0]) for i in colored_arrays]
fig = plt.figure(1, figsize=(7,7))
ax = Axes3D(fig, rect=[0, 0, 0.95, 1], elev=48, azim=134)
ax.scatter(X[:, 3], X[:, 0], X[:, 2],
          c=colored_tuples, edgecolor="k", s=50)
ax.set_xlabel("Petal width")
ax.set_ylabel("Sepal length")
ax.set_zlabel("Petal length")
plt.title("Gaussian Mixture Model", fontsize=14)

enter image description here

К вашему сведению, в библиотеке Scikit Learn есть несколько альтернативных кластерных алгоритмов.

https://scikit-learn.org/stable/modules/clustering.html

...