Diese Berechnungen können leicht unter Verwendung vorhandener Funktionen erhalten werden, aber wir werden sie im Sinne der Untersuchung des Inhalts von Grund auf neu implementieren.
A : 0, 3, 3, 5, 5, 5, 5, 7, 7, 10 B : 0, 1, 2, 3, 5, 5, 7, 8, 9, 10 C : 3, 4, 4, 5, 5, 5, 5, 6, 6, 7
Berechnen Sie die mittlere Differenz und den Gini-Koeffizienten für die Daten in.
Hier werden die mittlere Differenz und der Gini-Koeffizient durch die folgenden Formeln definiert.
\frac{Σ_iΣ_j|x_i-x_j|}{n^2}
\frac{Σ_iΣ_j|x_i-x_j|}{2n^2 \bar{x}}
Deshalb habe ich das Programm wie folgt geschrieben.
import numpy as np
A = np.array([0,3,3,5,5,5,5,7,7,10])
B = np.array([0,1,2,3,5,5,7,8,9,10])
C = np.array([3,4,4,5,5,5,5,6,6,7])
#Durchschnittlicher Unterschied
def ave_diff(x):
n=len(x)**2
result = [np.abs(x[i]-x[j])/n for i in range(len(x)) for j in range(len(x))]
return sum(result)
"""
print(ave_diff(A))
print(ave_diff(B))
print(ave_diff(C))
2.76
3.7599999999999976
1.2000000000000008
"""
#Gini-Koeffizient
def get_gini(x):
def get_gini(x):
n=len(x)**2
x_bar=x.mean()
result = [np.abs(x[i]-x[j])/(2*n*x_bar) for i in range(len(x)) for j in range(len(x))]
return sum(result)
"""
print(get_gini(A))
print(get_gini(B))
print(get_gini(C))
0.2760000000000002
0.3760000000000002
0.12000000000000008
"""
Wenn p_i = f_i / n
H(p_1, p_2, ...., p_n) = -Σp_iilog(p_ii)
Definiert in. Diese Menge wird als Entropie bezeichnet. Je größer H ist, desto gleichmäßiger ist die Verteilung, und je kleiner H ist, desto konzentrierter ist es.
Beispiel Ich habe 100 Schüler gefragt, woher sie kommen. Die folgenden Ergebnisse wurden vor 10 Jahren und in diesem Jahr erhalten. Vergleichen Sie die Verteilung dieses Ursprungsortes unter dem Gesichtspunkt der Konzentration.
Bereich | A | B | C | D | E | Gesamt |
---|---|---|---|---|---|---|
Dieses Jahr | 32 | 19 | 10 | 24 | 15 | 100 |
vor 10 Jahren | 28 | 13 | 18 | 29 | 12 | 100 |
import numpy as np
a=np.array([32, 19, 10, 24, 15])
b=np.array([28,13,18,29,12])
def entropy(x):
H=0
n=sum(x)
H=[x[i]/n*np.log10(x[i]/n) for i in range(len(x))]
# for i in range(len(x)):
# p=a[i]/n
# H.append(p*np.log10(p))
return -sum(H)
"""
print(entropy(a))
print(entropy(b))
0.667724435887455
0.6704368955892825
"""
Berechnen Sie die Standardbewertung und die Abweichungsbewertung für Daten B.
Standard Score / Standardisierung
z_i = \frac{xi-\bar{x}}{S_x}
Damit
def standard_score(x):
x_bar = x.mean()
s=np.sqrt(x.var())
z = [(x[i]-x_bar)/s for i in range(len(x))]
return z
"""
standard_score(B)
[-1.5214515486254614,
-1.217161238900369,
-0.9128709291752768,
-0.6085806194501845,
0.0,
0.0,
0.6085806194501845,
0.9128709291752768,
1.217161238900369,
1.5214515486254614]
"""
Informationen zur Abweichungsbewertung
T_i = 10z_i * 50
Also habe ich die obige Funktion ein wenig geändert
def dev_val(x):
x_bar = x.mean()
s=np.sqrt(x.var())
T = [(x[i]-x_bar)/s*10 +50 for i in range(len(x))]
return T
'''
def_val(B)
[34.78548451374539,
37.82838761099631,
40.87129070824723,
43.91419380549816,
50.0,
50.0,
56.08580619450184,
59.12870929175277,
62.17161238900369,
65.21451548625461]
'''
Es wird sein.
Recommended Posts