В моем коде после того, как я добавил последние 3 строки, происходит RunTimeWarning: Invalid value, обнаруженный в true_divide, я не знаю, что должен делать, строки, которые я добавляю, не имеют деления 0, все значения > 0.
import pandas as pd
import numpy as np
from sklearn import preprocessing
from scipy.spatial.distance import pdist, squareform
data = pd.read_csv('mfeat-fac.txt', delimiter= '\s+', header=None, index_col=False)
df = pd.DataFrame(data)
min_max_scaler = preprocessing.MinMaxScaler()
np_scaled = min_max_scaler.fit_transform(df)
df_normalized = pd.DataFrame(np_scaled)
df_normalized = df_normalized.values
distancias = pdist(df_normalized, metric='euclidean')
distancias = squareform(distancias) #Matriz de dissimilaridades
m=1.6 #Coeficiente de fuzzificação
p=1 #Numero de matrizes simultanes
n=2000 #Numero de elementos
T=150 #Limite de iterações
K=10 #Num de grupos
er=10**-10 #Erro
coef= 1/(m-1)
Gp = np.random.rand(K,n) #linhas = grupos; colunas = objeto
Gp2 = Gp/Gp.sum(axis=0,keepdims=1) #Matriz de grau de pertinencia; somatorio nos grupos =1
alfa = np.zeros((K,p), dtype=np.float64)
alfa[0:K, 0:p] = 1.0 #Matriz inicial de pesos (para matriz unica, não muda nada)
argumento = np.zeros((K,n), dtype=np.float64) #Matriz inicial dos argumentos
proto = np.zeros((K,1), dtype=np.uint16) #Matriz inicial dos protótipos
sumdist= np.zeros((n,1), dtype=np.float64) #Matriz inicial para somatorio das dist do objeto a cada repre dos grupos
for k in range(K):
for h in range(n):
for i in range(n):
for j in range(p):
argumento[k,h] = argumento[k,h]+(Gp2[k,i]**m)*(alfa[k,j]*distancias[i,h])
proto[k] = np.argmin(argumento[k])
for t in range(K):
sumdist[i]=sumdist[i]+distancias[i,proto[t]]
Gp2[k,i] = 1/((distancias[i,proto[k]]/sumdist[i])**coef)