Python関連のことを調べてみた

Python関連のことを調べてみた

現場20年の営業がPythonを用いてデータ分析してみた。 (’晴れの国’岡山の降水量)

# はじめに
初めまして。初投稿です。今後のデータ駆動社会を考えてただの営業からデータサイエンティストを目指すべく勉強を始めた40代のサラリーマンです。
これまで、Pythonの本をみたりして独学してましたが、何を書いているのかさっぱりであり、わからなくても質問もできないので基礎から勉強できチューターとの会話もできるAidemyを選択しました。

# 自己紹介
某IT企業に勤める営業です。最近はマーケティングの仕事に着いています。外勤営業からマーケティングに配置転換し、様々なデータに触れる機会が増えてきています。
PCは毎日触れるが、これまで一度もプログラムは勉強経験なし
データサイエンティストを目指すべく、統計検定2級、G検定は開始時には取得済み(ただし、2年前に取得したので忘れてる・・・・汗)

# 目的
私の住んでいる岡山県は通称’晴れの国おかやま’と呼ばれています。
ちなみに岡山県の説明をみると下記のように記載されています。
ダントツではないが、確実に晴れの日が多い。
・降水量1mm未満の日:276.7日で全国第1位
(気象庁「全国気候表(1991~2020年(30年間)の

元記事を表示

いまさら基本的なRAGを構築する

# はじめに

LLMと検索をうまく組み合わせて,AIによる回答精度を高める,RAG(Retrieval-Augmented Generation)というフレームワークがあります.最近では,Advanced RAGやGraph RAGといった,更に進展したRAGが見られるようになり,これからさらに回答精度を高くするための研究が進んでいくと考えられます.今回は基本的な初期のRAGを今さらながら構築します.

# お題

今回は,私の最も好きな漫画である「進撃の巨人」についてLLMに回答させます.その際,元となるドキュメントを参照するとき(RAGあり)としないとき(RAGなし)で回答にどのような差が生まれるのか確認します.

元となるドキュメントは,[進撃の巨人のWikipedia](https://ja.wikipedia.org/wiki/%E9%80%B2%E6%92%83%E3%81%AE%E5%B7%A8%E4%BA%BA)から物語に関連する部分を自分で抜粋したものになります.

# 構成

今回は以下のような構成で構築します.LangchainとPGVectorを用いて構築し

元記事を表示

[Paiza]mod7占いを3つの解き方で解いてみた

PaizaのSランク相当問題(レベルアップ問題集)の次の問題を解説します.
3つの解法を解説したいと思います.
– 解説1(愚直解)
– 解説2(Paizaの解説と同じ方針)
– 解説3(DP)

https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7/

### 問題概要
数字のリストが与えられる.その中から異なる3つを選んだときの和が7で割り切れる数の組み合わせの個数を求めよ.

### 解法1(愚直解)
愚直に与えられた数字のリストから3つを選んで和のmodを計算します.

“`python
N = int(input())
A = [int(input()) for _ in range(N)]
ans = 0
for i in range(N):
for j in range(i+1,N):
for k in range(j+1,N):
if (A[i]+A[j]+A[k])%7 == 0:
ans += 1
print(an

元記事を表示

階段の昇り方の個数をsympyで一般化することで二項係数の和の公式を作る

# 背景 ~パスカルの三角形とフィボナッチ数列の関係~

パスカルの三角形に関して,以下のような有名な性質があります。

|パスカルの三角形を斜めに切って和を取るとフィボナッチ数列が現れる|
|:-|

## 帰納的証明

フィボナッチ数列もパスカルの三角形も,ともに帰納的に定義されているものなので,帰納的な証明が自然でしょう。実際,パスカルの三角形の作られ方を見れば,「前2段の和が次の段になっている」ことはほぼ明らかでありましょう。(偶奇の違いによって末端の`1`の現れ方が異なる点は注意が必要ですが。)

Pythonの`and`, `or`の動作

# 自分が最初におもっていた仕様

### 誤解1 `or`, `and` は基本的に引数は`bool`型で返り値は`bool`型で`bool`型

たとえば,
`0

元記事を表示

SPSS Modelerで最適なクラスター数(のヒント)を探してみる その2

前回の記事からの続きです。

https://qiita.com/harrowharrow16/items/57b6696193aeb9faf546

さて、今回は予告通りに、SPSS Modelerの拡張ノードを利用してシルエットスコアや誤差平方和(SSE)を計算して最適なクラスター数を推定してみます。

## シルエットスコアとは(再掲)
シルエットスコア(Silhouette Score)は、クラスタリングの効果を評価するために使用される指標の一つです。このスコアは、各データポイントがどの程度適切にクラスタリングされているかを数値で示します。具体的には、クラスタ内の凝集度とクラスタ間の分離度を用いて計算されます。
シルエットスコアは -1 から 1 の範囲で、1 に近いほどクラスタリングの品質が高いことを示します。スコアが 0 に近い場合は、クラスタの境界が曖昧であることを示し、負の値はクラスタリングが不適切である可能性があります。
引用 :

https://note.com/united_code/n/n8a15ae4063b3

※.引用元のそのままの内容を記載させていた

元記事を表示

骨折 or NOT骨折。GPT-4oにレントゲン写真を診断させてみた。

## 骨折しました
先日野球をしている最中、薬指にボールが当たり怪我をしてしまいました。
怪我をした翌日に病院へ行ったところ、骨折していないと診断されました。
そのときのレントゲン写真が下の画像になります。

※画像はレントゲン写真を自分のスマホで撮らせていただいたものです。

しかし、2週間後に病院へ行ったときは、骨折になっていました。
そのときのレントゲン写真が下の画像になります。

この2週間でどこかに強くぶつけたという記憶もなかったので、最初病院に行

元記事を表示

Pandasで楽しくデータ分析!初心者のための実践ガイド

## Pythonのpandasを使ったデータ分析をしてみよう!

こんにちは!今日はPythonの人気ライブラリ「Pandas」について、実際のデータを使いながら楽しく学んでいきましょう。データ分析の世界へようこそ!Pandasは、Pythonでデータ分析を行うための強力なツールであり、エクセルのような表形式のデータを簡単に扱えるのが特徴です。まずは、Pandasをインポートしましょう。

“`python
import pandas as pd
“`

さて、今回は架空の販売データを使って練習します。以下の内容で`sales_data.csv`というファイルを作成してください。

“`
date,product,category,price,quantity,sales,customer_id
2024-01-01,ノートPC,電子機器,80000,2,160000,C001
2024-01-02,コーヒーメーカー,家電,15000,3,45000,C002
2024-01-03,スニーカー,衣料品,8000,5,40000,C003
2024-01-04,書籍,書籍・文具,

元記事を表示

【Python】クラスのイニシャライザとメソッドの定義順について

# 概要
– Pythonのクラスにおいて、イニシャライザ(`__init__`)とメソッド定義の順番はどうであるか
# 結論
– メソッド定義が**先**、イニシャライザが**後**
# テスト環境
– Python 3.10.12
– Ubuntu 22.04.4 LTS (WSL2)
# テストコード
“`python
class TestClass():
def __init__(self, arg_func):
self.func = arg_func // self.funcに引数を代入
def __call__(self):
self.func()
def func(self): // メソッドを定義
print(“method func called”)

def f():
print(“arg func called”)

test = TestClass(f)
test()

/*
— 実行結果 —
arg func called
*/
“`

元記事を表示

Pythonでビット演算

# はじめに
前回に引き続きビット演算をやっていきます。
動作確認はGoogleColabpratoryで行っています。

# 論理和
“`python
0&0
“`

# 論理積
“`python
0|0
“`

# 排他的論理和
“`python
0^0
“`

# まとめ
よくある論理和、論理積、排他的論理和の表を出すコードです。
“`python
import numpy as np
import pandas as pd

column_list = [“x”, “y”, “論理和”,”論理積”, “排他的論理和”]
row_list = [“0”, “1”, “2”, “3”]
data = np.array([[0, 0, 0&0, 0|0, 0^0],
[0, 1, 0&1, 0|1, 0^1],
[1, 0, 1&0, 1|0, 1^0],
[1, 1, 1&1, 1|1, 1^1]])

df = pd.DataFrame(data, row_li

元記事を表示

Pythonに挑戦#1

皆さんこんにちは。Crane&Iの長谷川です。
久しぶりの投稿になります。
今回からPythonに関する記事を投稿しようと思います!
何故急にPythonの記事を投稿しようと思ったのかというと、現在参画している案件にてPythonで自動化してほしいと依頼を受けてゼロ知識から挑戦し始めたからです。
今まで、java scrpitやC言語、VBAなど様々な言語を勉強したり使ってきましたがPythonも(個人的に)癖があるなぁと思いながら楽しく悪戦苦闘しています。

# Pythonとは?
そもそもPythonとは何か?
Pythonとは、プログラミング言語の1種です。最近はとても人気と需要がある言語となっています。
その理由としては、コードの記述が短くシンプルな言語で、初心者でも比較的容易に利用できるためです。(要するに時間をかけて勉強しなくても扱える言語)
あと、コンパイル作業が無いのでコードを書いたら即実行。エラー個所がすぐにわかるのもありがたいですね!

# Pythonの環境準備
Pythonでコードを組む場合、使用する環境(PCのOSなど)に応じて適切なものを選択しなければなりま

元記事を表示

SSH接続先の【リモート】ディレクトリ内にある画像を【ホスト】で表示する方法

## 🖥️ 機器間の接続の仕組みの概要

:::note info
以下に、リモートサーバー上のディレクトリにある画像などのファイルをローカルマシンのブラウザで表示するための機器間接続の仕組みを示します。
:::

“`mermaid
flowchart LR
A[ローカルマシン] –>|1. SSH接続| B[リモートサーバー]
B –>|2. HTTPサーバー起動
python3 -m http.server 8000| B
A –>|3. ブラウザアクセス
http://<リモートサーバーのIP>:8000/| B
“`

:::note info
ファイアウォール等で直接sshアクセスできないケースが多いので、その場合はsshのトンネルを設定します
:::

“`mermaid
flowchart LR
A[ローカルマシン]
A –>|1. SSHトンネル設定
ssh -L 8000:localhost:8000 user@remote.server| B[リモートサーバー]
B –>|2. H

元記事を表示

Python lambdaで一行関数を書く時のコツ

## はじめに

Pythonのlambda式は、簡潔で読みやすい一行関数を作成するための強力なツールです。本記事では、lambdaを使って効果的な一行関数を書くためのコツをいくつか紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/be7e42f0-cc6a-90cd-ff99-8d61e3050277.png)

## 1. シンプルさを保つ

lambdaは単純な操作に最適です。複雑な処理は通常の関数で行いましょう。

“`python
# Good
square = lambda x: x**2
print(square(5)) # 出力: 25

# Not so good (複雑すぎる)
complicated = lambda x, y: [i for i in range(x) if i % y == 0]
print(complicated(10, 3)) # 出力: [0, 3, 6, 9]
“`

## 2. 読みやすさを優先する

元記事を表示

Python リスト内の重複要素を簡単に削除する方法

## はじめに

こんにちは!今回は、Pythonでリスト内の重複要素を簡単に削除する方法について解説します。データ処理や分析において、重複を除去することは頻繁に必要となる作業です。ここでは、効率的かつ簡潔なコードで重複を除去する方法をいくつか紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/e202fe05-567a-115e-3c6d-85fc8afddd92.png)

## 1. setを使用する方法

最も簡単で効率的な方法は、`set`を使用することです。`set`は重複を許さないデータ構造なので、これを利用して重複を除去できます。

“`python
def remove_duplicates(lst):
return list(set(lst))

# 使用例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
pri

元記事を表示

RAGでPDFの内容に関する質問に回答するgradioアプリを作ってみた

## はじめに

 [つくりながら学ぶ!生成AIアプリ&エージェント開発入門](https://www.amazon.co.jp/dp/4839985022)を読んでいて本に書かれているPDFをアップロードしてRAGを使ってPDFの内容に関するstreamlitアプリをgradioアプリに変換してみました。

 本にはこれ以外にも色々な生成AIアプリの作り方が書いてあるので興味のある人はぜひ手に取ってみて下さい。オススメです。

## 構成

UI:gradio
生成AIモデル:ChatGPT-4o or ChatGPT-4o mini(選択可)
RAGフレームワーク:langchain

## 準備

 pipでgradio, openai, langchain, langchain_community, langchain_openai, PyPDF2あたりをインストールしておいて下さい。インストールされているnumpyが最新の2.XX系だと動かないかもしれません、動かなかったら1.XX系にダウングレードして下さい。あと、OpenAI APIが利用できるようにアカウントを作成して

元記事を表示

ImportError: libGL.so.1: cannot open shared object file: No such file or directoryへの対処法

# 環境
ubuntu 22.04
jupyter notebookで実行

# やったこと

~~~
!apt update
!apt install libgl1-mesa-glx
~~~

# 結果

libGL.so.1 がインストールされ、エラーが解消された。

元記事を表示

ラベルエンコーディングについて

## 紹介文
本記事はPython初心者かつ機械学習初心者による備忘録的内容である。
また、機械学習を勉強し始めた人を対象とした記事である。
マークダウン記法なども何もわからない状態からの記事投稿のため、
今後内容や記載方法なども精査していきたい。

## エンコーディング
変数は以下の二種類に分けることができる。
– 数値変数
– カテゴリー変数(文字変数)

さらにカテゴリー変数は以下の二種類に分けることができる。
– 順序変数(ordinal)
– 名義変数(nominal)

順序変数は並び順に意味のある文字、名義変数は並び順に特に意味はないもの。
たとえば、評価S,A,B,Cにはその並び順に意味があるし、赤、青、緑などは並び順に特に意味はない。

/*
余談
SAOの劇場版オーディナルスケールはこの順序変数のオーディナルのこと。
オーディナルは数値自体が順番を表す数字であり、カーディナルは量を表す数値である。
たとえば、1位、2位であればordinal numberだし、1人、2人であればcardinal numberになる。
*/

基本的に

元記事を表示

【Pythonだけ】Reflexで手軽に作るゲームアプリ

## はじめに
PythonのみでWebアプリを作れる系のフレームワーク、[Reflex](https://reflex.dev/)。
今回は画面をタップしてスコアを競う簡単なゲームを作ってみました。(音が鳴りますのでご注意ください。)

※スマートフォン推奨

https://reflex-tap.reflex.run/

例によってPWA化しているので、ホーム画面に追加して暇つぶしにどうぞ。

https://qiita.com/papasim824/items/1e3bfd3984b7af155ade

※利用している画像素材はすべてChatGPT(Dall-E 3)を利用して生成しています。

## コード解説

※コード全体はリポジトリを参照ください。

https://github.com/ppspps824/ref

元記事を表示

量子コンピュータで画像のエッジ検出

# TL;DR
画像のエッジ検出は、オンラインミーティングでの背景透過や画像認識など、さまざまな応用分野で重要な役割を果たしています。
この画像処理に対して、量子コンピュータは、従来のコンピュータに比べて指数的な優位性を持つため、非常に高効率な処理が可能です。例えば、1000 x 1000ピクセル、64ビットの画像を通常の方法で処理する場合、100万ビット(100万次元の実数ベクトル)が必要ですが、量子コンピュータではこれをわずか20量子ビットで表現できます。
本記事では、このような指数優位性をもつ量子コンピュータにおけるエッジ検出の理論と実装例を紹介します。

### 対象読者

対象読者としては量子力学にある程度理解のある方になると思います。
テンソル積や観測確率、アダマールゲートなどは解説しません。

# 理論

### 古典画像からQPIE形式へ

古典的な画像として2×2ピクセルの次の画像を考えます。画像は白黒で各ビットの色が$I_0$などと書かれているとします。

この画像のビットに対してまず色を次のように規格化し、
“`math
\begin{equation}
c_i

元記事を表示

Pythonで簡単に作れる!Pygameを使ったピンポンゲームの作り方

# はじめに

こんにちは!今回はPythonで簡単にピンポンゲームを作成する方法を紹介します。`pygame`ライブラリを使えば、初心者でも手軽にゲームを作ることができます。それでは、早速始めましょう!

## Pygameのインストール

まずは、`pygame`ライブラリをインストールします。以下のコマンドをターミナルで実行してください。

“`sh
pip install pygame
“`

## ゲームプログラムを書く
“`python
import pygame
import sys

# pygameを初期化
pygame.init()

# 画面の設定
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption(“ピンポンゲーム”)

# 色の定義
black = (0, 0, 0)
white = (255, 255, 255)

# パドルのサイズ
paddle

元記事を表示

OTHERカテゴリの最新記事