[PYTHON] Passende App Ich habe versucht, Statistiken über starke Leute zu erstellen und ein Modell für maschinelles Lernen zu erstellen

Vorwort

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.

Datensammlung

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.

Analyse

Ich habe die gesammelten Daten mithilfe der Python-Bibliothek analysiert.

Funktionswert

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. ** ** **

jährliches Einkommen

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.

ダウンロード (71).png (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.

Bildung

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... ダウンロード (74).png (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.

Höhe

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)

ダウンロード (72).png

...?

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))

ダウンロード (73).png (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 ~~

Körpertyp

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)

ダウンロード (76).png (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))

ダウンロード (45).png (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

Hier in der Gegend ...

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.

Versuchen Sie, eine Maschine zur Vorhersage ähnlicher Zahlen zu erstellen

Vorverarbeitung

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.

corr.png

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! !!

Auswahl der Merkmalsmenge

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]

Modellauswahl

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 versucht, meine Anzahl von Likes vorherzusagen

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).

Ich habe die Daten geändert und gespielt

Ich habe versucht, die Graduiertenschule zu absolvieren

...
  'Bildung': 'Absolvierte die Graduiertenschule', #Wechsel vom College-Absolventen
...

#Ergebnis
[207.56731856]

Ein erschreckender akademischer Hintergrund.

Ich habe versucht, es 180 cm groß zu machen

...
  'Höhe': '180', #Geändert von 171
...

#Ergebnis
[164.67592949]

Erschreckende Höhe.

Schließlich

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

Passende App Ich habe versucht, Statistiken über starke Leute zu erstellen und ein Modell für maschinelles Lernen zu erstellen
[Azure] Ich habe versucht, eine virtuelle Linux-Maschine mit Azure von Microsoft Learn zu erstellen
Ich habe versucht, ein Modell mit dem Beispiel von Amazon SageMaker Autopilot zu erstellen
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich möchte einen maschinellen Lerndienst ohne Programmierung erstellen! Web-API
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich habe versucht, die Anzahl der im Inland infizierten Menschen der neuen Korona mit einem mathematischen Modell vorherzusagen
Ich habe versucht, die Vorhersage-API des maschinellen Lernmodells von WordPress aus aufzurufen
Ich habe versucht, das Modell mit der Low-Code-Bibliothek für maschinelles Lernen "PyCaret" zu visualisieren.
Ich möchte einen maschinellen Lerndienst ohne Programmierung erstellen! Textklassifizierung
Ich möchte einfach ein Rauschmodell erstellen
Ich habe versucht, die beim maschinellen Lernen verwendeten Bewertungsindizes zu organisieren (Regressionsmodell).
Ein Anfänger des maschinellen Lernens versuchte, mit Python ein Vorhersagemodell für Pferderennen zu erstellen
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ich habe versucht, verschiedene Methoden für maschinelles Lernen (Vorhersagemodell) mithilfe von Scicit-Learn zu implementieren
Ein Anfänger des maschinellen Lernens versuchte an einem Tag, eine Sheltie-Urteils-KI zu erstellen
Ich habe versucht, die Lernfunktion im neuronalen Netzwerk sorgfältig zu verstehen, ohne die Bibliothek für maschinelles Lernen zu verwenden (erste Hälfte).
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
[Keras] Ich habe versucht, das Problem der Klassifizierung des Donut-Typ-Bereichs durch maschinelles Lernen zu lösen. [Studie]
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
Ich habe versucht, mit Open AI Gym eine verbesserte Lernumgebung für Othello zu schaffen
[Python] Ich habe versucht, automatisch einen täglichen Bericht über YWT mit Outlook-Mail zu erstellen
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Ich habe versucht, automatisch einen Bericht mit der Markov-Kette zu erstellen
Erstellen Sie eine App für maschinelles Lernen mit ABEJA Platform + LINE Bot
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Ich habe versucht, ein Deep-Learning-Modell von TensorFlow mit TensorFlow Serving zu hosten
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe versucht, Tensorboard zu verwenden, ein Visualisierungstool für maschinelles Lernen
Ich habe versucht, durch maschinelles Lernen Sätze in den XX-Stil umzuwandeln
Ich habe versucht, die Yin- und Yang-Klassifikation hololiver Mitglieder durch maschinelles Lernen zu überprüfen
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren
Ich habe versucht, einen Bot für die Ankündigung eines Wiire-Ereignisses zu erstellen
Ich habe versucht, mit PI Fu aus einem Bild ein 3D-Modell einer Person zu erstellen
Ich habe versucht, das überwachte Lernen des maschinellen Lernens auch für Serveringenieure auf leicht verständliche Weise zu verstehen 1
[Qiita API] [Statistik • Maschinelles Lernen] Ich habe versucht, die bisher veröffentlichten Artikel zusammenzufassen und zu analysieren.
Ich war frustriert von Kaggle und versuchte, durch Schaben und maschinelles Lernen ein gutes Mietobjekt zu finden
Ich habe versucht, das überwachte Lernen des maschinellen Lernens auch für Serveringenieure auf leicht verständliche Weise zu verstehen 2
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Implementierung ~
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Ich habe versucht, eine Umgebung von MkDocs unter Amazon Linux zu erstellen
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
Ich habe versucht, einen einfachen Kredit-Score mit logistischer Regression zu erstellen.
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen