Polis2024-05-13
Polis由来でないデータを解析してみる実験
このページは実験ログ
前回のソースコード探す
公開してなかったか
repositoryってほどではないからだな
上流のデータを変える
今回のデータはPolis由来ではなく、縦がユーザ、横が質問の、0/1のデータ。Polisと違って欠損はない
あっさりクラスターはできた
https://gyazo.com/e9644ad9051f355672a0c1ada76fd9fc
画像だけではない詳細を出すところでエラーになっているのを直す
code:diff
- for k in range(n_voters):
+ for k in range(len(clusters_K_star)):
これは前回のデータが小さすぎて気づかなかったバグだな、n_votersが100を超えるとエラーになる
n_voters == 112, len(clusters_K_star) == 100
KeyError: 0
gpt.icon
データフレームの構造確認:
matrix のカラムとインデックスを確認して、どのような形式でデータが格納されているかを把握します。
print(matrix.columns) と print(matrix.index) を実行して、その構造を確認します。
出力結果を見ると、matrix のカラムは...文字列
KeyError の発生原因: 元のコードの matrix[c].iloc[idx_g] は c を整数として扱っていますが、実際には c は文字列である必要があります。
コードを読む
statements_all_in = range(8)
これさては前回雑にハードコードしたなw
statements_all_in = matrix.columnsに変更
起きている現象は:
code:py
for c in range(N_comments):
というわけなので:
code:py
comment = statements_all_inc # comment id という形が正しい
出力結果を見てもまあ納得感がある
N=112
python t.py 2.28s user 6.43s system 558% cpu 1.560 total
https://gyazo.com/e9644ad9051f355672a0c1ada76fd9fc
N=1116
python t.py 2.96s user 5.94s system 613% cpu 1.449 total
https://gyazo.com/0430f910c32c23c127a8fe81f573a199https://gyazo.com/b332640c731edb5d8a4a7817ddbce546
N=2231
python t.py 8.20s user 9.98s system 803% cpu 2.261 total
N=4462
python t.py 7.22s user 9.72s system 730% cpu 2.318 total
N=11153
python t.py 13.42s user 20.98s system 617% cpu 5.574 total
https://gyazo.com/16271572fa1f387819883f0ecf1f47b8
N=111526
python t.py 19.73s user 22.84s system 724% cpu 5.879 total
https://gyazo.com/197096fa68831b70bf8d691153356179
11万件のデータでも30秒くらいで解析できるのか
2024-05-14
前回は18種類の質問の「これは重要か?」の0/1だけを使ったが、今回は各質問の多肢択一をOne Hotに変換する
Panadsは普段あまりつかわないけど「for文で書けば書けるが頻発するとめんどくさいこと」を簡単に書けるな
gpt.icon
code:py
df = pd.DataFrame(data)
# 'selectedIndex'を含む列をフィルタリング
filtered_df = df.filter(like='selectedIndex')
# ダミー変数(0/1カラム)を作成
df_dummies = pd.get_dummies(df, columns=selectedIndex_cols, prefix=selectedIndex_cols)
多肢択一問題の回答をOne Hot Encodingするのも簡単
111526 rows x 74 columns
これでも40秒くらい
1000件でも11万件でも構造はほぼ同じ
1000件
https://scrapbox.io/files/664344c9d6b62a001cd4b58b.png
11万件
https://scrapbox.io/files/664344cb5c41730022b02d04.png
結局大規模なデータだと2クラスタになりがち
N=11万件, K=3
面白くないのでクラスタを3個に限定したらこうなった
https://scrapbox.io/files/664344d01c9a04001db06894.png
GPTによる解説
それぞれのグループの投票パターンと関心事に基づいて、以下のようなグループ名を提案します:
グループ0: 慎重評価者
根拠: このグループは、経済政策や安全保障法に関する質問で「どちらでもない」または「0」のオプションに一貫して中立または穏やかなフィードバックを提供しています。慎重で偏りのない視点を表しています。
グループ1: 現実的支持者
根拠: このグループは、増税、安全保障法、軍事基地の移設などの政府のイニシアチブを支持する傾向があります。政府の行動を現実的に受け入れていることを示しています。その投票パターンは、肯定的または支持的な反応に著しく傾いています。
グループ2: 憲法保守派
根拠: このグループの懸念は、憲法への遵守と軍事介入や原子力エネルギーへの慎重な姿勢に関連しています。国家政策の変更に対して憲法の規範を維持し、軍事的役割や原子力の拡大に懐疑的な視点を示しています。慎重で保守的なアプローチを反映しています。
これらの名前は、各グループの投票パターンと主要な関心事を反映することを目的としており、イデオロギー的な動機を想定することなく、特定の政策質問に対する反応に焦点を当てています。
nishio.icon感想
解説はデータを適切に反映している
「二項対立の真ん中に『どちらでもない』をいれただけやん!」と思ったw
強制5分割
N=11万件, K=5
https://gyazo.com/f1e4df47808c3db06875529eae6bd8e5
gpt.icon以下は、日本の政治的質問に対する異なるグループの反応に基づいて、適切なグループ名です:
グループ0: 進歩的改革派
このグループは集団的自衛権を含む安全保障法制に強く反対し、アベノミクスを評価しない立場を取り、原子力発電からの即時脱却を支持します。また、沖縄の米軍基地の名護市辺野古への移設に反対し、憲法9条の改正にも反対しています。これらの立場は、憲法への忠実さを重視し、軍事および核政策に慎重な進歩的で改革的なアプローチを示しています。
グループ1: 保守的守護者
このグループのメンバーは一般的に、日本の防衛能力を強化する安全保障法制を支持し、アベノミクスを評価し、沖縄の米軍基地の移設を支持し、自衛隊を明記する憲法改正を支持します。また、カジノを含む観光政策を推進することも支持しており、保守的で防衛志向が強く、経済成長を重視する姿勢を示しています。
グループ2: 慎重な穏健派
このグループはアベノミクスや安全保障法制に関してはグループ1に比べて支持がやや控えめであり、カジノや基地移設のような取り組みを支持しつつも、増税のような財政政策に慎重な立場を示しています。潜在的な利益と社会的影響を天秤にかけるバランスの取れた見解を持っています。
グループ3: 無関心な懐疑派
核電政策に関する中立的な反応が目立ち、大きな変化や強い意見に対しても積極的ではないため、主要な問題に対して懐疑的または決定を下すのが難しいようです。これは、無関心または関与が低い態度を反映している可能性があります。
グループ4: 批判的な観察者
このグループはアベノミクスや安全保障法制のような現行の政策に対して非常に批判的であり、米軍基地の移設にも抵抗しています。主要な経済および防衛政策に対する批判的な姿勢と、政府行動に対する深い観察と懐疑を示していることが窺えます。
これらのラベルは、日本の重要な政策質問に対する投票パターンと反応に基づいて、各グループの一般的な傾向と感情を捉えることを目的としています。