Hallo zusammen.
Verwenden Sie eine passende App? !! Ich fühle mich gut mit einer der Personen, die kürzlich mit der passenden App übereinstimmten.
Übrigens könnte die von mir verwendete passende App auf die Daten anderer beliebter Mitglieder verweisen. (Wahrscheinlich werden Personen angezeigt, die 100 oder mehr davon erhalten haben.)
Ich war enttäuscht, es zu sehen.
"Als ob ich nicht 100 bekommen hätte ..." ** "Ich möchte auch ein Mann über 100 sein" **
Ich dachte so stark.
Wie können Sie gleichzeitig ein "Mann über 100" werden? In diesem Sinne habe ich die Daten analysiert.
Wir haben ständig andere Mitgliederdaten manuell eingegeben (unter vollständiger Verwendung der Transkription von Google Document) und etwa 60 Daten gesammelt.
In Bezug auf die Daten anderer angezeigter Mitglieder wurden Personen mit einem Alter nahe meinem 32. Lebensjahr angezeigt. Danach werden alle Daten als 30 Jahre alt angenommen.
Ich habe die gesammelten Daten mithilfe der Python-Bibliothek analysiert.
Für den Funktionsbetrag haben wir die folgenden ausgewählten Elemente als Eingabeelemente verwendet.
** Ich möchte die Beziehung zwischen der Anzahl der Features und der Anzahl der Likes sehen, an denen Sie interessiert sein könnten. ** ** **
Plötzlich kam das Jahreseinkommen! Es ist sowieso ein Jahreseinkommen! Cusso! (Ich studiere Datenwissenschaft, weil ich ein Jahreseinkommen verdienen möchte, bitte 10 Millionen)
Zeichnen wir also ein Streudiagramm.
import matplotlib.pyplot as plt
plt.scatter(data['jährliches Einkommen'], data['Anzahl der Likes'], alpha=0.3)
#Daten sind ein Datenrahmen.
(Vertikal ist die Anzahl der Likes, horizontal ist das Jahreseinkommen)
** [Diskussion] ** ** Derjenige, der keine 5 Millionen hat, ist kein Mann. Es ist unmöglich, ein monatliches Einkommen von 140.000 Yen zu haben. ** ** ** Ich fühle mich wie das gesagt wird.
Überraschend? Der Grund ist, dass es keine große Korrelation zwischen dem Jahreseinkommen und der Anzahl der Likes gibt. (Je höher es ist, desto mehr nimmt es nicht zu)
Wenn ich tatsächlich den Korrelationskoeffizienten herausgebe ...
pd.DataFrame({"x":data['jährliches Einkommen'], "y":data['Anzahl der Likes']}).corr()
Jahreseinkommen x wie Korrelationskoeffizient
x y
x 1.00000 -0.06363
y -0.06363 1.00000
Man kann sagen, dass es fast keine Korrelation gibt.
Menschen, die sehr ähnlich sind, haben wahrscheinlich etwas anderes als ihr Jahreseinkommen. (* Es ist jedoch auf 5 Millionen oder mehr begrenzt.)
Welche anderen Funktionen sind beteiligt? Lass uns genauer hinschauen.
Die Auswahlwerte für den akademischen Hintergrund waren wie folgt. Junior College/Berufsschule/Hochschulabsolvent|High School Absolvent|Absolvent einer Universität|Absolvierte die Graduiertenschule|Andere
Auf Japanisch ist das schwer zu handhaben
data['Bildung'] = data['Bildung'].replace({'Junior College/Berufsschule/Hochschulabsolvent':0 ,'High School Absolvent':1 ,'Absolvent einer Universität':2 ,'Absolvierte die Graduiertenschule':3 ,'Andere':4})
Die Etikettencodierung erfolgte in Form von.
Zeichnen wir ein Streudiagramm in dieser Form.
plt.scatter(data['Bildung'], data['Anzahl der Likes'], alpha=0.3)
Ergebnis... (Es tut mir leid, dass ich die Skala nicht angepasst habe.)
"Junior College / Berufsschule / Fachhochschulabsolvent": 0, "High School-Absolvent": 1, "Universitätsabsolvent": 2, "Absolvent": 3, "Andere": 4 ist.
** Immerhin gibt es viele Hochschulen und höher. .. .. ** ** **
Hier wird das Korrelationsverhältnis berechnet, weil es nicht der Korrelationskoeffizient ist, sondern in diesem Fall die Beziehung zwischen der quantitativen Variablen und der qualitativen Variablen. Da der akademische Hintergrund nicht quantifiziert werden kann (eine qualitative Variable, da wir nicht wissen, wie groß der Unterschied zwischen Hochschulabsolventen und Hochschulabsolventen ist), untersuchen wir, ob die Ergebnisse der Anzahl der Likes für jeden ausgewählten Wert verzerrt sind.
Funktion von irgendwo empfangen
def corr_ratio(x, y):
variation = ((x - x.mean()) ** 2).sum()
#print(" variation", variation)
inter_class = sum([((x[y == i] - x[y == i].mean()) ** 2).sum() for i in np.unique(y)])
#print(" inter_class", inter_class)
return (inter_class / variation)
#Korrelationsverhältnis berechnen
corr_ratio(data.loc[:, ["Anzahl der Likes"]].values, data.loc[:, ['Bildung']].values)
Ergebnis
# 0.8820459777290447
Es scheint eine gewisse Korrelation zu geben.
** [Diskussion] ** ** Zumindest solltest du das College verlassen ** Ich fühle mich wie das gesagt wird.
Wirst du mir vergeben, auch wenn es niedrig ist? Ich frage, also sei nicht wie ein Jahreseinkommen. .. ..
Lass uns einen Blick darauf werfen.
#Diagramm ohne die NaN-Linie
plt.scatter(data.loc[data["Höhe"].notnull()]["Höhe"], data.loc[data["Höhe"].notnull()]['Anzahl der Likes'], alpha=0.3)
...?
Daher ist es schwierig, die Höhenverteilung zu verstehen. Lassen Sie es uns in einem Histogramm ausdrücken.
plt.hist(data["Höhe"].astype(np.float32))
(Auf 5 cm gerollt.)
Die durchschnittliche Größe japanischer Männer beträgt übrigens etwa 170 cm ... ** Es ist unversöhnlich **
Lassen Sie uns auch hier den Korrelationskoeffizienten ermitteln.
pd.DataFrame({"x":data['Höhe'].astype(np.float32), "y":data['Anzahl der Likes']}).corr()
Höhe x wie Korrelationskoeffizient
x y
x 1.000000 0.073241
y 0.073241 1.000000
Auch hier besteht fast keine Korrelation.
** [Diskussion] ** ** Ich sage nicht 180cm, aber ich möchte 175cm ** Ich fühle mich wie das gesagt wird.
Ich bin 171 cm ... ~~ ○ Wirklich ~~
Die Körpertypoptionen sind wie folgt. "Schlank": 0, "Leicht dünn": 1, "Normal": 2, "Muskulös": 3, "Leicht mollig": 4, "Mollig": 5
Ich werde versuchen, die Handlung nach dem Ersetzen durch die oben genannten
#Diagramm ohne die NaN-Linie
plt.scatter(data.loc[data["Körpertyp"].notnull()]["Körpertyp"], data.loc[data["Körpertyp"].notnull()]['Wie Nummer'], alpha=0.3)
(Es tut mir leid, dass ich die Skala nicht erneut angepasst habe.)
Nun, es scheint eine Normalverteilung zu sein, oder besser gesagt, es gibt die meisten Menschen mit normaler Körperform und nur wenige andere, also scheint es keine Vorurteile zu geben.
[2019/11/12 postscript-] Versuchen wir es noch einmal mit dem Histogramm.
plt.hist(data_original['Körpertyp'].astype(np.float32))
(Skala ry)
Der erste ist normal und der zweite ist muskulös. [--2019 / 11/12 Nachschrift]
Als nächstes erhalten wir das Korrelationsverhältnis.
#Korrelationsverhältnis berechnen
corr_ratio(data.loc[:, ["Wie Nummer"]].values, data.loc[:, ['Körpertyp']].values)
Ergebnis
0.9457908220700801
Es wurde eine gute Nummer. Ehrlich gesagt ist die Zuverlässigkeit unbekannt, da es nur wenige Daten gibt, aber die Anzahl der Personen ist die größte ** Ich denke, es ist normal oder muskulös. ** ** **
** [Diskussion] ** ** Normal oder muskulös ** Streben Sie eine normale Körperform an
Ich denke, Sie konnten die meisten Dinge sehen, an denen Sie interessiert waren. Danach werde ich versuchen, eine Maschine zur Vorhersage ähnlicher Zahlen mithilfe von maschinellem Lernen zu erstellen.
Wir haben in der Regression einige Beschriftungen vorgenommen, aber für die meisten Elemente sind die Zahlen nicht proportional zu ihrer Bedeutung. Zum Beispiel bedeutet das Ersetzen von "anderen" durch 4 wie im vorherigen akademischen Hintergrund nicht, dass es besser ist als 3 "Universitätsabsolventen" mit weniger als 4.
Also haben wir diesmal Frequenzkennzeichnung gemacht. Die Frequenzkennzeichnung wird hier nicht diskutiert, aber je höher die Frequenz, desto höher die Zahl. (Ich denke, es ist ziemlich vernünftig angesichts der Hypothese, dass die Entscheidungen, die Menschen mit vielen Vorlieben treffen müssen, getroffen werden müssen.)
def labeling(data):
for column in data.columns:
#Vermeiden Sie Likes, da es sich um objektive Variablen handelt. Höhe und Jahreseinkommen werden später standardisiert.
if not column in ['Likes', 'Heights', 'Salary']:
#size of each category
freq_encoding[column] = data.groupby(column).size()
#get frequency of each category
freq_encoding[column] = freq_encoding[column]/len(data)
#print(encoding)
data[column] = data[column].map(freq_encoding[column])
freq_encoding[column] = freq_encoding[column].to_dict()
return freq_encoding, data
# freq_Die Codierung wird wiederverwendet, wenn die Daten, die Sie in Zukunft vorhersagen möchten, häufig beschriftet werden.
freq_encoding, data = labeling(data)
Höhe und Jahreseinkommen wurden standardisiert.
def normalize(data):
# #Standardisierung
#Höhe: sagt 171.5(durchschnittlich)/5.8(Standardabweichung)Scheint zu sein
data['Heights'] = ((data['Heights']-171.5)/5.8)
#Für das Jahreseinkommen kann keine Standardabweichung erzielt werden...
data['Salary'] = ((data['Salary']-data['Salary'].mean())/data['Salary'].std())
return data
data = normalize(data)
Darüber hinaus möchte ich den Korrelationskoeffizienten zwischen jeder Merkmalsmenge und der Anzahl der Likes herausfinden. In diesem Zusammenhang bedeutet die Tatsache, dass es eine Korrelation gibt, dass es Optionen gibt, die die starken Männer alle wählen.
Wie ist das? Schauen Sie sich die Spalte Likes (erste Spalte) an.
・ Hintergrund (Bildungshintergrund) ・ WantAKids (Willst du Kinder) ・ Sozialität ・ Alkohol (Schnaps) Es gibt eine gewisse Korrelation in. (Je näher der Wert an 1 liegt, desto korrelierter ist er.)
Kurz gesagt, wenn Sie hier einen starken Mann imitieren, werden Sie vielleicht mehr davon! !!
Der Prozess ist unterbrochen, aber als ich verschiedene Merkmalsmengen herausgezogen habe, war die Genauigkeit am besten, um die folgenden Merkmalsmengen nicht einzuschließen.
・ Anwesenheit oder Abwesenheit von Gesicht · Körpertyp ·jährliches Einkommen
Es hat nicht gereicht, diejenigen mit niedrigem Korrelationsverhältnis / Korrelationskoeffizienten zu entfernen, daher frage ich mich, ob es keine andere Wahl gibt, als tatsächlich zu versuchen, die Merkmalsmenge zu reduzieren.
Oder besser gesagt, es ist ziemlich überraschend, dass Körperform und Jahreseinkommen nichts mit der Anzahl der Likes zu tun haben. (Vergessen Sie jedoch nicht, dass ** das Jahreseinkommen auf 5 Millionen oder mehr begrenzt ist **!)
[2019/11/14 postscript-] 【Entschuldigung】 In Bezug auf das Vorhandensein oder Fehlen eines Gesichts lautet die Flagge: "Ist das Gesicht auf dem ersten Blatt sichtbar?" (Ich habe vergessen, mehrere Bilder zu registrieren.) Es ist also nicht so, dass das Gesicht keine Rolle spielt. [--2019 / 11/14 Nachtrag]
Dieses Mal habe ich kein tiefes Lernen angewendet, weil ich maschinelles Lernen studiert habe. Als ich lineare Regression (normal, Lasso, Ridge), deterministischen Regressionsbaum und SVR ausprobierte, war SVR die beste.
Obwohl gesagt wird, dass die Holdout-Methode nicht so häufig durchgeführt werden sollte, wenn dieser Datensatz klein ist, konnten wir eine Genauigkeit von etwa 83% erzielen.
Eine Überanpassung ist möglich, kann aber auch dann nicht behoben werden, wenn dies zu lange dauert. Daher werden wir mit dieser Genauigkeit fortfahren.
[2019/11/12 postscript-] Zug und Test sind übrigens ca. 8: 2. [--2019 / 11/12 Nachschrift]
Ich habe nach weniger als einem Monat aufgehört, aber meine Anzahl von Likes war ungefähr 80 (Tohoho ...
Ich habe versucht zu sehen, ob ich meine Daten richtig vorhersagen kann.
Meine Daten sind unten.
my_df = pd.DataFrame({
'Wie Nummer': 80.0,
'Gesicht': 'Ja',
'Blutgruppe': 'O-Typ',
'Brüder und Schwestern': 'Ältester Sohn',
'Bildung': 'Absolvent einer Universität',
'Schulname': 'Keiner',
'Besetzung': 'IT-bezogen', #2019/11/11 Ich habe vergessen, es als Büroangestellter zu versuchen.
'jährliches Einkommen': '***', # jährliches Einkommenは関係ないので秘密
'Höhe': '171',
'Körpertyp': 'gewöhnlich',
'Ehegeschichte': 'Ledig / unverheiratet)',
'Bereitschaft zu heiraten': 'Ich möchte einen guten Menschen haben',
'Willst du Kinder': 'weiß nicht',
'Hausarbeit / Kinderbetreuung': 'Ich möchte aktiv teilnehmen',
'Hoffe bis wir uns treffen': 'Ich möchte dich treffen, wenn du Lust dazu hast',
'Gebühr für das erste Date': 'Männer bezahlen alles',
'Geselligkeit': 'Ich mag kleine Gruppen',
'Mitbewohner': 'Allein leben',
'Urlaub': 'Samstag und Sonntag',
'Sake': 'trinken',
'Tabak': 'Nicht rauchen',
'Name_alpha': 0
}, index=[0])
##Codierung und Frequenzcodierung unter dem Etikett...
#Reduzieren Sie die Anzahl der Likes und konvertieren Sie in numpy
X = my_df.iloc[:, 1:].values
#Prognose! !! !! !!
print(model_svr_rbf1.predict(X))
Ergebnis
[73.22405579]
Gib keine Zahlen in der Ferne aus !!!! (Ich meine, maschinelles Lernen ist unglaublich)
(11.11.2019: Ich habe vergessen, dass ich den Jobtyp als Testversion zu einem Mitarbeiter eines Unternehmens gemacht habe (Ergebnis: ungefähr 64). Ich habe ihn zu diesem Zeitpunkt auf den IT-bezogenen Input festgelegt. Der IT-bezogene ist ein besserer Eindruck! ?)
Übrigens, danach verbesserte sich die Genauigkeit (insgesamt), wenn ich meinen eigenen Wert einsetzte und trainierte (ungefähr 83 → 86%), so dass es eine große Möglichkeit gibt, dass das Gleiche, das ich bekam, eine vernünftige Zahl war (Tränen).
...
'Bildung': 'Absolvierte die Graduiertenschule', #Wechsel vom College-Absolventen
...
#Ergebnis
[207.56731856]
Ein erschreckender akademischer Hintergrund.
...
'Höhe': '180', #Geändert von 171
...
#Ergebnis
[164.67592949]
Erschreckende Höhe.
Die Vorhersagemaschine wurde mit einer schlampigen Genauigkeit von etwa 86% hergestellt. Bedeutet dies, dass sich die Anzahl der Likes je nach Auswahl ändert?
Und es gab keinen Zusammenhang zwischen dem Jahreseinkommen (wenn es 5 Millionen oder mehr waren) und der Körperform (obwohl ich ein normaler Körpertyp bin). Mit anderen Worten, es gab möglicherweise einen Faktor, der die von mir gewählte Wahl nicht getroffen hat.
Aufgrund der Ergebnisse scheint das Jahreseinkommen nichts damit zu tun zu haben, daher werde ich mein Bestes geben, um in Zukunft größer zu werden.
Recommended Posts