Я изучаю кластеризацию и KMeans и тому подобное, поэтому мои знания очень просты в этой теме.То, что я имею ниже, - это самостоятельное изучение того, как это работает.По сути, если в одном из столбцов отображается «а», «двоичный» будет равен 1. По сути, я пытаюсь научить его шаблону.Я узнал следующее из учебника, используя набор данных Titanic, но я адаптировался к своим собственным данным.
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler
import seaborn as sns
import matplotlib.pyplot as plt
мои построенные данные
dataset = [
[0,'x','f','g'],[1,'a','c','b'],[1,'d','k','a'],[0,'y','v','w'],
[0,'q','w','e'],[1,'c','a','l'],[0,'t','x','j'],[1,'w','o','a'],
[0,'z','m','n'],[1,'z','x','a'],[0,'f','g','h'],[1,'h','a','c'],
[1,'a','r','e'],[0,'g','c','c']
]
df = pd.DataFrame(dataset, columns=['Binary','Col1','Col2','Col3'])
df.head()
df:
Binary Col1 Col2 Col3
------------------------
1 a b c
0 x t v
0 s q w
1 n m a
1 u a r
Кодирование недвоичного в двоичный:
labelEncoder = LabelEncoder()
labelEncoder.fit(df['Col1'])
df['Col1'] = labelEncoder.transform(df['Col1'])
labelEncoder.fit(df['Col2'])
df['Col2'] = labelEncoder.transform(df['Col2'])
labelEncoder.fit(df['Col3'])
df['Col3'] = labelEncoder.transform(df['Col3'])
Установить кластеры в два, потому что это либо 1, либо 0?
X = np.array(df.drop(['Binary'], 1).astype(float))
y = np.array(df['Binary'])
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
Проверить это:
correct = 0
for i in range(len(X)):
predict_me = np.array(X[i].astype(float))
predict_me = predict_me.reshape(-1, len(predict_me))
prediction = kmeans.predict(predict_me)
if prediction[0] == y[i]:
correct += 1
Результат:
print(f'{round(correct/len(X) * 100)}% Accuracy')
>>> 71%
Как я могу получить более точное значение, чтобы он на 99,99% знал, что двоичный столбец "a" означает 1?Больше данных?