[PYTHON] [Qiita API] [Statistik • Maschinelles Lernen] Ich habe versucht, die bisher veröffentlichten Artikel zusammenzufassen und zu analysieren.

Es ist ungefähr ein halbes Jahr her, seit ich angefangen habe, in Qiita zu posten, hauptsächlich für Artikel zu Statistik, maschinellem Lernen und Datenanalyse. Werfen wir einen Blick zurück auf die vorherigen Artikel mit der Qiita-API. (Im Folgenden berechnet aus den Daten vom 10. August 2015)

Wir werden uns zuerst die Daten ansehen, dann den Python-Code, der diese Inhalte generiert hat, und wie die Qiita-API von Python verwendet wird.

1. Zeigen Sie die Daten an

Nach Lager Anzahl der veröffentlichten Artikel

Sie sind unter den ersten fünf und machen 73% aus. Beliebte Artikel sind voreingenommen ... Ich persönlich mag "Die Bedeutung der Aufteilung von Brüchen, die von Pizza verstanden werden" unten, aber es ist überhaupt nicht auf Lager. : heat_smile:

Bestandsmenge Prozentsatz(%) Akkumulation(%) Titel
750 28.1 28.1 [Maschinelles Lernen] Ich werde es erklären, während ich das Deep Learning Framework Chainer ausprobiere.
595 22.3 50.4 [Mathematik] Visualisieren wir, was Eigenwerte und Eigenvektoren sind
318 11.9 62.3 [Statistik] Erste "Standardabweichung" (um Frustrationen mit Statistiken zu vermeiden)
163 6.1 68.4 Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
124 4.6 73.1 [Deep Learning] Probieren Sie Autoencoder mit Chainer aus und visualisieren Sie das Ergebnis.
82 3.1 76.1 [Update] Erklären Sie die stochastische Gradientenabstiegsmethode, indem Sie sie in Python verschieben
55 2.1 78.2 Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 2 aus
52 1.9 80.1 Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 3 aus
50 1.9 82.0 [Statistik] Verstehen Sie anhand von Animationen, wie die ROC-Kurve aussieht.
45 1.7 83.7 Visualisierung und Analyse des Stava Twitter-Datenstandorts
44 1.6 85.4 Versuchen Sie eine rudimentäre Stimmungsanalyse für Twitter Stream API-Daten.
44 1.6 87.0 Hauptkomponentenanalyse Analysieren Sie handschriftliche Zahlen mit PCA. Teil 1
40 1.5 88.5 Verständnis der Bedeutung komplexer und bizarrer Normalverteilungsformeln
31 1.2 89.7 Spielen Sie handschriftliche Zahlen mit Python Part 1
28 1.0 90.7 [Statistik] Verallgemeinertes lineares gemischtes Modell(GLMM)Visualisierung zu verstehen.
28 1.0 91.8 [Statistik] Lassen Sie uns die Beziehung zwischen der Normalverteilung und der Chi-Quadrat-Verteilung visualisieren.
24 0.9 92.7 Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
21 0.8 93.4 Einführung in die Graphendatenbank Neo4j in Python für Anfänger(Für Mac OS X.)
20 0.7 94.2 [Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
20 0.7 94.9 Visualisieren Sie die Häufigkeit von Wortvorkommen in Sätzen mit Word Cloud.[Python]
20 0.7 95.7 [Maschinelles Lernen] k-nearest neighbor method(k Methode des nächsten Nachbarn)Schreiben Sie selbst in Python und erkennen Sie handschriftliche Zahlen
17 0.6 96.3 Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
16 0.6 96.9 [Statistik] [R] Versuchen Sie, die Teilungspunktregression zu verwenden.
15 0.6 97.5 Handschriftliche Zahlen mit Python spielen Teil 2 (identifizieren)
14 0.5 98.0 Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
12 0.4 98.5 [Statistik] Q.-Verstehen Sie, wie das Q-Diagramm mit Animation funktioniert.
11 0.4 98.9 Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
11 0.4 99.3 Hauptkomponentenanalyse Analysieren Sie handschriftliche Zahlen mit PCA. Teil 2
8 0.3 99.6 [python]Memorandum der zufälligen Generation
6 0.2 99.8 Einstellungen zum Generieren animierter GIFs aus Python auf dem Mac
5 0.2 100.0 Bedeutung der Teilung von Brüchen in Pizza verstanden

Kategorisiert nach Kategorie

Ich schreibe Artikel in den Kategorien "Maschinelles Lernen", "Statistik", "Mathematik", "Datenanalyse" und "Andere".

Maschinelles Lernen
[Maschinelles Lernen] Ich werde es erklären, während ich das Deep Learning Framework Chainer ausprobiere.
[Deep Learning] Probieren Sie Autoencoder mit Chainer aus und visualisieren Sie das Ergebnis.
[Update] Erklären Sie die stochastische Gradientenabstiegsmethode, indem Sie sie in Python verschieben
Hauptkomponentenanalyse Analysieren Sie handschriftliche Zahlen mit PCA. Teil 1
Spielen Sie handschriftliche Zahlen mit Python Part 1
[Maschinelles Lernen] k-nearest neighbor method(k Methode des nächsten Nachbarn)Schreiben Sie selbst in Python und erkennen Sie handschriftliche Zahlen
Handschriftliche Zahlen mit Python spielen Teil 2 (identifizieren)
Hauptkomponentenanalyse Analysieren Sie handschriftliche Zahlen mit PCA. Teil 2

Statistiken
[Statistik] Erste "Standardabweichung" (um Frustrationen mit Statistiken zu vermeiden)
[Statistik] Verstehen Sie anhand von Animationen, wie die ROC-Kurve aussieht.
Verständnis der Bedeutung komplexer und bizarrer Normalverteilungsformeln
[Statistik] Verallgemeinertes lineares gemischtes Modell(GLMM)Visualisierung zu verstehen.
[Statistik] Lassen Sie uns die Beziehung zwischen der Normalverteilung und der Chi-Quadrat-Verteilung visualisieren.
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
[Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
[Statistik] [R] Versuchen Sie, die Teilungspunktregression zu verwenden.
Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
[Statistik] Q.-Verstehen Sie, wie das Q-Diagramm mit Animation funktioniert.
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
[python]Memorandum der zufälligen Generation

Mathematik
[Mathematik] Visualisieren wir, was Eigenwerte und Eigenvektoren sind
Bedeutung der Teilung von Brüchen in Pizza verstanden

Datenanalyse
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 2 aus
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 3 aus
Visualisierung und Analyse des Stava Twitter-Datenstandorts
Versuchen Sie eine rudimentäre Stimmungsanalyse für Twitter Stream API-Daten.

Andere
Einführung in die Graphendatenbank Neo4j in Python für Anfänger(Für Mac OS X.)
Visualisieren Sie die Häufigkeit von Wortvorkommen in Sätzen mit Word Cloud.[Python]
Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
Einstellungen zum Generieren animierter GIFs aus Python auf dem Mac

Nach Tag

Schauen wir uns jedes Tag an. Da ich im Grunde Python verwende, ist Python die höchste Anzahl von Artikeln. In Bezug auf das Lager / Artikel-Verhältnis sind "Deep Learning", "Deep Learning" und "Chainer" überwältigend hoch. Sie können die Aufregung des tiefen Lernens in diesen Tagen sehen.

Die Aktienrate von "Mathematik" und "maschinellem Lernen" scheint relativ hoch zu sein.

Etikett Anzahl der Artikel Bestandsmenge Lager/Artikelverhältnis
Python 30 2664 88.8
statistics 22 1589 72.2
Statistiken 17 1274 74.9
Maschinelles Lernen 9 1127 125.2
Twitter 6 376 62.7
Verarbeitung natürlicher Sprache 6 379 63.2
Mathematik 6 1054 175.7
matplotlib 5 63 12.6
MongoDB 4 314 78.5
MachineLearning 4 148 37.0
DeepLearning 2 874 437.0
Statistiken 2 35 17.5
scikit-learn 2 55 27.5
Tiefes Lernen 2 874 437.0
Schaben 2 37 18.5
Chainer 2 874 437.0
Datenbank 1 21 21.0
Datenvisualisierung 1 45 45.0
Statistischer Test 1 12 12.0
Denkweise 1 5 5.0
Mustererkennung 1 50 50.0
Memo 1 5 5.0
R 1 16 16.0
Datenanalyse 1 40 40.0
Visualisierung 1 20 20.0
math 1 82 82.0
numpy 1 8 8.0
Diagrammdatenbank 1 21 21.0
BeautifulSoup 1 17 17.0
Statistische Modellierung 1 28 28.0
neo4j 1 21 21.0
Einführung in die Statistik 1 11 11.0

In der Grafik sieht es so aus.

stock_article.png

Stock Benutzer

Ich stellte mir vor, dass dieselbe Person viel auf Lager haben würde, aber auf den ersten Blick scheint es, dass es ziemlich viele Leute gibt. Die folgende Tabelle zeigt die Stammgäste, die gut bestückt sind. Danke: entspannt:

Rangfolge Bestandsmenge
1 22
2 18
3 13
4 10
5 10
6 10
7 9
8 9
9 9
10 9
11 8
12 8
13 8
14 8
15 8
16 8
17 7
18 7
19 7
20 7

Es ist eine Grafik der 150 besten Benutzer mit einer großen Anzahl von Aktien. Die Anzahl der eindeutigen Benutzer betrug 1771.

stock_num.png

Es ist ein Histogramm der Anzahl der Aktien. Es ist näher an 1 bis 5 Aktien als ich mir vorgestellt habe. Niedrige Wiederholungsrate ...: müde: In Zukunft werde ich mein Bestes geben, um Artikel zu schreiben, die wiederholt werden!

stock_hist.png

2. Erklärung des Python-Codes

Holen Sie sich Daten von der Qiita API

Das Zugriffstoken ist Qiita [Einstellungen] → [Anwendungen] → [Neues Token ausstellen] Es kann ausgestellt werden bei. Bitte setzen Sie das erworbene Token im folgenden ''.

%matplotlib inline
import requests
import json, sys
from collections import defaultdict
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('ggplot')

key = '<Zugriffstoken>'
auth_str = 'Bearer %s'%(key)
headers = {'Authorization': auth_str}
cnt = 0
data_list = []
users = defaultdict(int)

Definieren Sie eine Funktion get_stockers, um den Aktienbenutzer und die Anzahl der Aktien zu ermitteln.

# -------------------Holen Sie sich die Anzahl der Bestände für jeden Artikel-----------------------#
def get_stockers(_id):
    global headers
    url = 'https://qiita.com/api/v2/items/{}/stockers'.format(_id)
    cnt = 0
    _sum = 0
    while True:
        cnt += 1
        payload = {'page': cnt, 'per_page': 20}
        res = requests.get(url, params=payload, headers=headers)
        data = res.json()
        for d in data:
            users[d['id']] += 1
        num = len(data)
        if num == 0:
            break
        _sum += num
        
    return _sum

Verwenden Sie die folgende Schleife, um die von Ihnen veröffentlichten Artikel abzurufen, die damit verbundenen Aktienbenutzerinformationen abzurufen und in der Liste zu belassen.

# -------------------Artikelinformationserfassung-----------------------#
url = 'https://qiita.com/api/v2/authenticated_user/items'

while True:
    cnt += 1
    sys.stdout.write("{}, ".format(cnt))
    payload = {'page': cnt, 'per_page': 20}
    res = requests.get(url, params=payload, headers=headers)
    data = res.json()
    if len(data) == 0:
        break
    data_list.extend(data)

res = []

Extrahieren Sie die erforderlichen Informationen aus den erfassten Daten und organisieren Sie sie. Auch private Artikel (begrenzte gemeinsame Beiträge) sind ausgeschlossen.

# -------------------Datenformung-----------------------#
for i, d in enumerate(data_list):
    sys.stdout.write("{}, ".format(i))

    #Ausgeschlossen sind private Artikel
    if d['private'] == True:
        continue
        
    article_info = {}
    for k in ['id', 'title', 'private', 'created_at', 'tags', 'url']:
        article_info[k] = d[k]
    
    article_info['stock'] = get_stockers(d['id'])
    res.append(article_info)

Im Folgenden werden der Artikelsatz, die Anzahl der Bestände und das Verhältnis in einer Form ausgegeben, die so wie sie ist als Abschriftstabelle eingefügt werden kann.

sum_of_stocks = np.sum([r['stock'] for r in res]).astype(np.float32)

cum = 0
print "|Bestandsmenge|Prozentsatz(%)|Akkumulation(%)|Titel|"
print "|:----------:|:----------:|:----------:|:----------|"
for i in np.argsort([r['stock'] for r in res])[::-1]:
    r = res[i]
    ratio = r['stock']/sum_of_stocks*100
    cum += ratio
    print "|{0}|{1:.1f}|{2:.1f}|[{3}]({4})|".format(r['stock'],ratio,cum,r['title'].encode('utf-8'),r['url'])

Aggregieren Sie um Tags.

#Tag-Aggregation
tag_cnt = defaultdict(int)
for r in res:
    for t in r['tags']:
        tag_cnt[t['name']] += 1

#Anzahl der Bestände pro Tag
tag_stock_cnt = defaultdict(int)
for t in tag_cnt.keys():
    for r in res:
        for _t in r['tags']:
            if t == _t['name']:
                tag_stock_cnt[t] += r['stock']
tag_stock_dict = {}
for t, cnt in tag_stock_cnt.items():
    tag_stock_dict[t] = cnt

#Verarbeitet, damit es in einem DataFrame platziert werden kann
tag_list = []
ind_list = []
for k, t in tag_cnt.items():
    ind_list.append(k)
    tag_list.append((t , tag_stock_dict[k]))

#Datenrahmengenerierung
tag_list = np.array(tag_list)
df = pd.DataFrame(tag_list, index=ind_list, columns=['cnt', 'stocks'])

n = float(len(tag_cnt))
df['cnt_ratio'] = df['cnt']/n
df['stock_ratio'] = df['stocks']/sum_of_stocks

#Anzeige der Bestandsmenge und des Bestandsverhältnisses nach Tag
df_tag = df.sort(columns='cnt', ascending=False)

print "|Etikett|Anzahl der Artikel|Bestandsmenge|Lager/Artikelverhältnis|"
print "|:----------:|:----------:|:----------:|:----------:|"
for d in df_tag.iterrows():
    print "|[{0}](http://qiita.com/tags/{0})|{1}|{2}|{3:.1f}|".format(d[0].encode('utf-8'),int(d[1][0]),int(d[1][1]),d[1][1]/d[1][0])



#Grafikanzeige
df[['cnt_ratio','stock_ratio']].sort(columns='cnt_ratio', ascending=False).plot(kind="bar", figsize=(17, 8), alpha=0.7, 
                                title="The ratio of article and stocks for each tag.")

Als nächstes wird die Funktion aggregiert und dem Benutzer angezeigt.

#Benutzeraggregation
id_list = []
cnt_list = []
for _id, cnt in users.items():
    id_list.append((_id, cnt))

df = pd.DataFrame(id_list, columns=["id","cnt"])

#Top 20 Personen anzeigen
print "|Rangfolge|Bestandsmenge|"
print "|:----------:|:----------:|"
for i, d in enumerate(df.sort(columns="cnt", ascending=False)['cnt'][:20]):
    print "| {} | {} |".format(i+1, d)


#Balkendiagramm der Benutzerbestellung mit dem höchsten Lagerbestand
df.sort(columns="cnt", ascending=False)[:150].plot(kind="bar", figsize=(17, 8), alpha=0.6, xticks=[], 
                                                   title="The number of stocks from 1 user.", width=1, color="blue")


#Histogramm der Bestandszählung
df['cnt'].plot(kind="hist", figsize=(13, 10), alpha=0.7, color="Green", bins=25, xlim=(1,26),
              title="Histgram of stocked users.")

Recommended Posts

[Qiita API] [Statistik • Maschinelles Lernen] Ich habe versucht, die bisher veröffentlichten Artikel zusammenzufassen und zu analysieren.
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Qiita Job Ich habe versucht, den Job zu analysieren
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
[Erste COTOHA-API] Ich habe versucht, die alte Geschichte zusammenzufassen
Ich habe versucht, die Yin- und Yang-Klassifikation hololiver Mitglieder durch maschinelles Lernen zu überprüfen
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, die COTOHA-API zu berühren
Ich versuchte zusammenzufassen, bis ich die Bank verließ und Ingenieur wurde
Ich habe versucht, die Vorhersage-API des maschinellen Lernmodells von WordPress aus aufzurufen
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, verschiedene Sätze mit der automatischen Zusammenfassungs-API "summpy" zusammenzufassen.
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich habe versucht, das Modell mit der Low-Code-Bibliothek für maschinelles Lernen "PyCaret" zu visualisieren.
Bestimmen Sie die Authentizität von veröffentlichten Artikeln durch maschinelles Lernen (Google Prediction API).
Ich habe Web Scraping versucht, um die Texte zu analysieren.
Ich habe versucht, die Qiita-API von Anfang an zu aktivieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Ich habe versucht, YouTube zu kratzen, aber ich kann die API verwenden, also tu es nicht.
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
[Kein Code] Ich habe in meiner Abschlussarbeit über elliptische Kurven und Blockchain geschrieben und versucht, die Studienmethode zusammenzufassen
Ich habe versucht, die Syntax zu bewerten, die mit der COTOHA-API zu humorvoll und humorvoll war.
Ich habe versucht, die String-Operationen von Python zusammenzufassen
So geben Sie die Anzahl der ANSICHTEN, Likes und Bestände von Artikeln aus, die in Qiita an CSV gesendet wurden (erstellt mit "Python + Qiita API v2")
Passende App Ich habe versucht, Statistiken über starke Leute zu erstellen und ein Modell für maschinelles Lernen zu erstellen
Ich habe die Methode des maschinellen Lernens und ihre Implementierungssprache anhand der Tag-Informationen von Qiita betrachtet
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe versucht, durch maschinelles Lernen Sätze in den XX-Stil umzuwandeln
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ich habe versucht, die Uhrzeit und das heutige Wetter anzuzeigen
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
Ich habe versucht zusammenzufassen, wie das EPEL-Repository erneut verwendet wird
Ich habe versucht, die Qiita-API zu berühren
Ich habe versucht, SparseMatrix zusammenzufassen
Ich habe versucht, Othello AI mit Tensorflow zu machen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Einführung ~
Ich war frustriert von Kaggle und versuchte, durch Schaben und maschinelles Lernen ein gutes Mietobjekt zu finden
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
Ich bin mir über den Unterschied zwischen Modulen, Paketen und Bibliotheken nicht sicher und habe versucht, sie zu organisieren.
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Implementierung ~
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ermitteln Sie die Anzahl der PVs von Qiita-Artikeln, die Sie mit API veröffentlicht haben
Ich habe versucht, meinen Lieblingssänger (SHISHAMO) mit der Spotify-API zu analysieren
Ich habe versucht zusammenzufassen, was mit Qiita mit Word Cloud ausgegeben wurde
Ich habe versucht, die Befehle zusammenzufassen, die Anfängeringenieure heute verwenden
Ich habe versucht, Spieler- und Fertigkeitsnamen aus Sportartikeln zu extrahieren
Ich habe versucht, die häufig verwendete Implementierungsmethode von pytest-mock zusammenzufassen
[Maschinelles Lernen] Ich habe versucht, so etwas wie Bilder weiterzugeben