NISHIO Hirokazu[日本語][English]

Polis2024-05-13

related: Polisのデータを解析

Polis由来でないデータを解析してみる実験

前回のソースコード探す

上流のデータを変える

  • 今回のデータはPolis由来ではなく、縦がユーザ、横が質問の、0/1のデータ。Polisと違って欠損はない
  • あっさりクラスターはできた image

画像だけではない詳細を出すところでエラーになっているのを直す

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に変更
    • 起きている現象は: py
for c in range(N_comments):
   matrix[c]  # error here
- というわけなので:

py

comment = statements_all_in[c]  # comment id
matrix[comment]  # OK
- という形が正しい

出力結果を見てもまあ納得感がある

N=112

  • python t.py 2.28s user 6.43s system 558% cpu 1.560 total
  • image N=1116
  • python t.py 2.96s user 5.94s system 613% cpu 1.449 total
  • imageimage 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
  • image N=111526
  • python t.py 19.73s user 22.84s system 724% cpu 5.879 total
  • image

11万件のデータでも30秒くらいで解析できるのか

2024-05-14

前回は18種類の質問の「これは重要か?」の0/1だけを使ったが、今回は各質問の多肢択一をOne Hotに変換する

Panadsは普段あまりつかわないけど「for文で書けば書けるが頻発するとめんどくさいこと」を簡単に書けるな gpt.icon 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件

image

11万件

image

結局大規模なデータだと2クラスタになりがち

N=11万件, K=3

面白くないのでクラスタを3個に限定したらこうなった image GPTによる解説 それぞれのグループの投票パターンと関心事に基づいて、以下のようなグループ名を提案します:

  • グループ0: 慎重評価者
    • 根拠: このグループは、経済政策や安全保障法に関する質問で「どちらでもない」または「0」のオプションに一貫して中立または穏やかなフィードバックを提供しています。慎重で偏りのない視点を表しています。
  • グループ1: 現実的支持者
    • 根拠: このグループは、増税、安全保障法、軍事基地の移設などの政府のイニシアチブを支持する傾向があります。政府の行動を現実的に受け入れていることを示しています。その投票パターンは、肯定的または支持的な反応に著しく傾いています。
  • グループ2: 憲法保守派
    • 根拠: このグループの懸念は、憲法への遵守と軍事介入や原子力エネルギーへの慎重な姿勢に関連しています。国家政策の変更に対して憲法の規範を維持し、軍事的役割や原子力の拡大に懐疑的な視点を示しています。慎重で保守的なアプローチを反映しています。 これらの名前は、各グループの投票パターンと主要な関心事を反映することを目的としており、イデオロギー的な動機を想定することなく、特定の政策質問に対する反応に焦点を当てています。

nishio.icon感想

  • 解説はデータを適切に反映している
  • 「二項対立の真ん中に『どちらでもない』をいれただけやん!」と思ったw

強制5分割

N=11万件, K=5

image gpt.icon以下は、日本の政治的質問に対する異なるグループの反応に基づいて、適切なグループ名です:

  • グループ0: 進歩的改革派
    • このグループは集団的自衛権を含む安全保障法制に強く反対し、アベノミクスを評価しない立場を取り、原子力発電からの即時脱却を支持します。また、沖縄の米軍基地の名護市辺野古への移設に反対し、憲法9条の改正にも反対しています。これらの立場は、憲法への忠実さを重視し、軍事および核政策に慎重な進歩的で改革的なアプローチを示しています。
  • グループ1: 保守的守護者
    • このグループのメンバーは一般的に、日本の防衛能力を強化する安全保障法制を支持し、アベノミクスを評価し、沖縄の米軍基地の移設を支持し、自衛隊を明記する憲法改正を支持します。また、カジノを含む観光政策を推進することも支持しており、保守的で防衛志向が強く、経済成長を重視する姿勢を示しています。
  • グループ2: 慎重な穏健派
    • このグループはアベノミクスや安全保障法制に関してはグループ1に比べて支持がやや控えめであり、カジノや基地移設のような取り組みを支持しつつも、増税のような財政政策に慎重な立場を示しています。潜在的な利益と社会的影響を天秤にかけるバランスの取れた見解を持っています。
  • グループ3: 無関心な懐疑派
    • 核電政策に関する中立的な反応が目立ち、大きな変化や強い意見に対しても積極的ではないため、主要な問題に対して懐疑的または決定を下すのが難しいようです。これは、無関心または関与が低い態度を反映している可能性があります。
  • グループ4: 批判的な観察者
    • このグループはアベノミクスや安全保障法制のような現行の政策に対して非常に批判的であり、米軍基地の移設にも抵抗しています。主要な経済および防衛政策に対する批判的な姿勢と、政府行動に対する深い観察と懐疑を示していることが窺えます。

これらのラベルは、日本の重要な政策質問に対する投票パターンと反応に基づいて、各グループの一般的な傾向と感情を捉えることを目的としています。

p世論地図

prev Polis2024-05-08


(C)NISHIO Hirokazu / Converted from Markdown (ja)
Source: [GitHub] / [Scrapbox]