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

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

【はじめに】かわいい癒し系ロボットを作りたい…

# 自己紹介
はじめまして。社会人2年目のnami_fumiです!
主にpythonでAI少し勉強したり、アプリ作ったりしてます!
業務ではbigqueryを使って、データの抽出や集計を行っています。

# 概要
いきなりですが、**こんなかわいい・癒やしロボットを作りたい!!**

具体的には、人の笑顔を認識して目の部分が笑うとか、「ただいま」と言ったら「おかえり」と返してくれる…
最終的には、撫でたらなんか反応する(触覚の追加)。
そんなのを作りたい!!

[パナソニック NICOBO (ストーングレー)](https://ec-plus.panasonic.jp/store/ap/storeaez/a2A/ProductDetail?HB=RW-NC1-H&utm_source=google&utm_medium=banner&utm_campaign=nicobo_OPT_D_G_ec-plus-pla-nicobo&utm_content=nicobo_OPT_D_G_ec-plus-pla-nicobo_pla&utm_term=RW-NC1-H_n_n_n_000273&

元記事を表示

読みにくいMNISTの文字を見つける

突然ですが、私はリアルでは字が汚いと言われることがあります。どれくらい汚いかと言われると、大学院生時代に生協で備品を注文しようとした時に個数を数字で書くと職員さんが読めないレベルで字が汚いらしいです(自分は達筆なのだと思っています)。
ところで機械学習で字といえばMNISTを想像される方が多いと思いますが、あれって実際機械学習を勉強するにしては字がきれいなのかとふと疑問に思うことがあります。生データを見てみると「え、読めない」と思うことがあるのですが、じゃあ機械学習を使ってみるとどうなるのかちょっと覗いてみましょう。
# コーディング
## ライブラリのインポート
“`Python3
from sklearn.datasets import load_digits
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split as tts
import numpy as np
import matplotlib.pyplot as plt

元記事を表示

Anacondaについて インストールと起動について

Anacondaについて勉強をしました。初歩的なことをまとめさせていただきます。

Anacondaとは、ユーザーはライブラリやツールのインストール、環境設定の手間を大幅に削減することができます。

デメリットとしてはいかが考えられます。
・一括インストールのため容量が大きい(3GB以上の空き容量が必要、人にもっては数十GBの容量がかかっていたという話もあります)
・不要なライブラリがある
・Pythonの標準パッケージとは異なる動作を示すことがある

Conda環境を利用する時には、次のコマンドでConda環境を有効化します。
“`
conda activate
“`
このコマンドはConda環境を有効化し、Anacondaが提供する python コマンドなどが使えるようになります。
環境名を指定せずに conda activate コマンドを実行すると、デフォルトのConda環境である base 環境が有効になります。
各行の先頭に(base) が付きます。

Conda環境を終了するときは、次のコマンドを実行します。
“`
conda deactivate
“`

元記事を表示

環境変数とは? PaaS(heroku)デプロイ時の環境変数設定(Djangoプロジェクト)

この記事ではDjangoプロジェクトをPaaS(本記事ではheroku)へデプロイするときに環境変数を設定する方法について記述する.

## 環境変数とは?そのメリットは?
**環境変数の概要**
環境変数とは,オペレーティングシステムやアプリケーション実行環境において設定される変数のこと.アプリケーションの動作を制御したり,設定情報を保持したりするために使用される.

>環境変数は,以下のような場面で使用される.
>>データベース接続情報(ユーザー名、パスワード、ホスト名など)の設定
APIキーやシークレットトークンの保存
アプリケーションのデバッグモードの制御
外部サービスのエンドポイントURLの設定
ログレベルや出力先の指定

つまり,環境変数を使用することで,アプリケーションの設定を柔軟に管理でき,セキュリティの向上とデプロイの簡素化が実現できる.また,異なる環境(開発,ステージング,本番など)で同じアプリケーションを実行する際,環境変数を使用して環境ごとに適切な設定を適用することができる.

**環境変数のメリット**

**1.セキュリティの向上:**
機密情報(APIキー

元記事を表示

Python で heapq.nlargest/nsmallest を使う

# 動機

ある配列の top largest/smallest K elements を得たい場合、

– sort だと time = O(NlogN)かかってしまう。
– 自前で heapを使って実装するのはめんどくさい。

# 仕様

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/d21bbedc-8e85-38dd-31fb-c4a0fa37e163.png)

TODO: 返される配列はkeyでソートされてそう?
TODO: タイの場合はどのelementが選ばれるのだろう?元のindexが最も小さいものか?

# 使ってみた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/8cff9fea-3fdb-3776-e0c8-809ed5b5b64a.png)

# Ref.

https://docs.python.org/3/library/he

元記事を表示

フォルダからドキュメント画像を移動する参考プログラム

## 本記事の概要
以下の記事で紹介している2クラス分類モデルをもとに、任意のフォルダからドキュメント画像を別のフォルダに移動するプログラムである。

[2クラス分類:写真画像とドキュメント画像を分類するAIアプリ](https://qiita.com/jscodermd/items/f2e4d187c2c2d6d80afa)
風景や人物と言った一般的な写真画像と、スクリーンショットや文書等を撮影したドキュメント画像をCNN画像認識技術を用いて分類するモデル。

本プログラムの概要イメージ
![移動プログラム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3770452/3497c223-d462-9825-5574-603a949589c5.png)

全体の概要説明については、以下の記事を参照のこと。
[CNN画像解析:一般的な写真画像とドキュメント画像を分類するプログラムを作成](https://qiita.com/jscodermd/items/aedafe92783794a9d6c6)

##

元記事を表示

多クラス分類:写真画像とドキュメント画像、アート画像の3クラスを分類するAIアプリ

## 本記事の概要
本記事では、多クラス分類のプログラムについてまとめている。
全体については、以下の記事を参照。
[CNN画像解析:一般的な写真画像とドキュメント画像を分類するプログラムを作成](https://qiita.com/jscodermd/items/aedafe92783794a9d6c6)

本ブログはAidemy Premiumのカリキュラムの一環で、受講修了条件を満たすために公開している。

## 開発環境
– Google Colaboratory
モデルの作成・実行はGoogle Colab上で行った。
Pythonのバージョンは3.10.12

– Windows 11
Flaskによるアプリ作成・実行はWindowsローカルPC上で行った。
Pythonのバージョンは3.11.5

## アプリの概要
前回の2クラス分類のアプリケーションをアレンジし、一般画像とドキュメント画像に絵画などのアート画像を加え、3クラスの分類を行う。
全体の説明については以下の記事を参照。
[CNN画像解析:一般的な写真画像とドキュメント画像を分類するプログラムを作成](htt

元記事を表示

2クラス分類:写真画像とドキュメント画像を分類するAIアプリ

## 本記事の概要
本記事では、2クラス分類のプログラムについて記載している。
全体については、以下の記事を参照。
[CNN画像解析:一般的な写真画像とドキュメント画像を分類するプログラムを作成](https://qiita.com/jscodermd/items/aedafe92783794a9d6c6)

本ブログはAidemy Premiumのカリキュラムの一環で、受講修了条件を満たすために公開している。

## 開発環境
– Google Colaboratory
モデルの作成・実行はGoogle Colab上で行った。
Pythonのバージョンは3.10.12

– Windows 11
Flaskによるアプリ作成・実行はWindowsローカルPC上で行った。
Pythonのバージョンは3.11.5

## アプリの概要
風景や人物と言った一般的な写真画像と、画面スクリーンショットや文書等を撮影したドキュメント画像を区別する、CNN画像認識技術を用いた2クラス分類のプログラムを作成する。
詳細な説明は以下の記事を参照。
[CNN画像解析:一般的な写真画像とドキュメント画像を分

元記事を表示

CNN画像解析:一般的な写真画像とドキュメント画像を分類するプログラムを作成

## はじめに
システムエンジニアとして10年以上の経験がありますが、AI画像認識技術は初学者です。
AIを用いた技術を基礎から学びたく、教育訓練給付制度(専門実践教育訓練)を活用しAidemyのAIアプリ開発講座を受講しました。
本ブログはAidemy Premiumのカリキュラムの一環で、受講修了条件を満たすために公開しています。

## 本記事の概要

– どんな人に読んで欲しいか
AI画像認識技術(CNN画像解析)を利用した、シンプルな画像分類アプリケーションの実装方法を知りたい方

– この記事に書くこと、わかること
実際のプログラム・コード
AIによる画像分類モデルの作成、モデルを利用したアプリの作成の流れ

– この記事で扱わないこと
実装内容の細かな説明

### 開発環境
– Google Colaboratory
モデルの作成・実行はGoogle Colab上で行いました。
Pythonのバージョンは3.10.12

– Windows 11
Flaskによるアプリ作成・実行はWindowsローカルPC上で行いました。
Pythonのバージョンは3.11.5

#

元記事を表示

Python 3.11 + OpenCV4.9 + CUDA12.32 をビルドした話

## 1.OpenCVでの画像処理を早くしたかった。
OpenCVを試してみると、思っていたより簡単に画像処理ができて、これはすごい!簡単!と感心しました!
動画のフレームを読みだして、画像処理して、動画に戻すという例もQiitaにあったので、早速試してみたのですが、なんか遅い。
NvidiaのCUDA使ったら早いんじゃないん?と思いましたが、OpenCVのCUDAの機能はpipではインストールできず、ソースからビルドしないといけないらしい。(pipでバイナリをダウンロードしないオプションも試してみたのですが、なんかうまくいかず)
ビルドを解説したサイトもQiitaをはじめ多数あるので、きっとできるだろう、と気楽に始めてみたのですが、いろいろつまづきずつも、最終的にはビルド、環境構築、OpneCVでCUDA利用ができたので、共有するものです。
## 2.環境紹介
Windows11
Python 3.11 (Microsoft Storeからインストール)
OpenCV 4.9
OpenCV contrib
CUDA SDK 12.32
NVIDIA Video Codec SDK 1

元記事を表示

LLMモデル “Llama3” を 4bit 量子化して実行してみた

# 概要
– 一昨日発表された [Llama3](https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct) を4bit量子化 してつかってみました
– GPUの VRAM は 6GB 程度消費します
– Llama3の 語彙数は 32000(Llama2) => 128256 へと大幅に増えました

# 環境

– NVIDIA RTX A5000
– Python 3.11.4

# ソースコード

Llama3 を bitsandbytes で 4bit 量子化して読み込み、GPUメモリ使用量を確認します

“`python
import transformers
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, set_seed
from datetime import datetime

def cout_memory_availability(label):
“””

元記事を表示

ヤコビ行列やヘッセ行列と Python

# はじめに

ヤコビ行列やヘッセ行列を計算してくれるライブラリを紹介します。

今回は以下の関数を議論します。
$$ f(x_0,x_1) = \frac{\log x_0}{x_0^2} + \frac{x_1^2}{37} – \frac{x_1}{7}
,x_0=2,x_1=2$$

# SciPy

SciPy にはヤコビ行列を求める関数はありましたが、ヘッセ行列を計算する関数はありませんでした。

“`py: scipy.optimize
import numpy as np
from scipy.optimize import approx_fprime

def f(x):
return np.log(x[0])/(x[0]**2) + (x[1]**2)/37 – x[1]/7

x = np.array([2.0, 2.0])
jac = approx_fprime(x, f)
print(jac)
“`

https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.approx

元記事を表示

ABC350回答メモ

# 0.はじめに
 AtCoderJobsの名前を冠したコンテスト。
とはいえ普通の内容でしたが、若干難易度が高く感じました。
調子が悪かったためかもしれませんが・・。
 結局A~Cまでしか解けず、レートも-19で905にダウン。
最近は安泰と思ってた900台も危うくなってきました。

# 1.A – Past ABCs
 ABC316が開催されなかったことを使った、ちょっとだけひねった問題。
作り終わった後に前半部分はABCであるチェックが不要なことに気づきましたが
まぁいっかとそのまま提出してACでした。

 https://atcoder.jp/contests/abc350/submissions/52551354

# 2.B – Dentist Aoki
 たまに見かける猟奇的な設定の問題。
歯の場所ごとにフラグリストを持って置き
最初はON、リストに現れたらON、OFFを切替
最後にフラグリストを集計して表示すればOKでした。

 https://atcoder.jp/contests/abc350/submissions/52559135

元記事を表示

Pythonで「ファイル名またはディレクトリ名を変更する(pathlibモジュール)」の動作を確認してみた

# 概要

Pythonで「ファイル名またはディレクトリ名を変更する(pathlibモジュール)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/file/index17.html

# 実装

以下のファイルを作成しました。
“`sample.py
import pathlib

oldpath = pathlib.Path(‘./test/book.txt’)
oldpath.rename(pathlib.Path(‘./test/memo.txt’))

oldpath = pathlib.Path(‘./test/back’)
oldpath.rename(pathlib.Path(‘./test/old’))
“`

以下のコマンドを実行しました。
“`
$ mkdir test
$ touch test/book.txt
$ mkdir test/back
$ ls test
back book.txt
$ python3 sample.py
$ ls test
memo.txt ol

元記事を表示

[Python]Excel・VBA用の列名-列番号相互変換ツールをコードゴルフしてみた(371バイト)

## 動機
VBAでコードを書くとき、常々不満に思っていたことがあります。

それは、「Excel上では列名がアルファベット表記なのに、VBA上では何番目の列なのか指定する必要がある。これをいちいち照合するのは面倒くさい」ということです。
アルファベット表記の列名が、アルファベット26文字を使った単純な26進法(や、0にあたる表記を含めた27進法)になっていないのも面倒くさく感じる原因です。

その対策として作ったのが、今回の変換ツールです。
VBAでの困りごとなのでVBAで解決するのが筋なのでしょうが、その場のノリでPythonで作ってしまい、さらにコードゴルフまでしてしまいました。

ちなみに後述しますが、コマンドライン引数では半角スペースを入力できない、という性質を利用したコードなので、今回のコードをそのままVBAにしても、半角スペース入力がエラーにならずに処理されるという不具合が発生します。

### 要件
1. アルファベット(大文字・小文字問わず)で列名を入力すると、対応する列番号が出力される。(例:aA→27)
1. 1番の逆向きの動作も実行できる。(例:27→AA)
1

元記事を表示

pygameで画面遷移を行うには?

# pygameの画面遷移
ゲーム作りにおいて、画面遷移はプログラムの完成度に非常に関係します。
また可読性と汎用性においても関係します。

つまりは、この画面遷移は大事という話です
# やり方1 フラッグ
この方法は推奨されないが、プロセスにフラグを設定し、そのフラグを使って処理するかどうかを決める方法である。
“`python: 記述例1
import pygame

pygame.init()

screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
running = True
gamen1 = True
gamen2 = False

while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:

元記事を表示

ネットワークの制御設計

# はじめに

ネットワーク構造の性質を利用した制御を学習します📚

# ネットワーク結合されたシステムの分散制御について

ネットワーク結合されたシステムの分散制御は、現代社会において非常に重要な概念です。
分散制御の主な特徴と利点は以下の通りです。

– **自律性**:各ノードが自律的に動作し、局所的な情報に基づいて意思決定を行う
– **拡張性**:ノード数の増加に対して柔軟に対応でき、システム全体の性能を維持できる
– **耐故障性**:一部のノードに障害が発生しても、システム全体の機能を維持できる
– **適応性**:環境の変化に対して、各ノードが自律的に適応することでシステム全体の性能を維持できる
– **通信効率**:各ノードが局所的な情報のみを利用することで、通信負荷を減らすことができる

# ネットワーク構造の性質を利用する

## 固定型ネットワーク上での制御

固定型ネットワークとは、ノード間の接続関係が固定されたネットワークを指します。

### 固定型ネットワークの代表例

– パワーグリッド(電力網) – 電力網は発電所、変電所、配電設備が互いに固定的に

元記事を表示

【初心者向け】Anaconda環境のJupitor labで、自動補完機能を追加する方法

# 【初心者向け】Anaconda環境のJupyter Labで、自動補完機能を追加する方法

Anacondaを使用してPythonの開発環境を構築している場合、Jupyter Labは非常に便利なツールの1つです。既に主要のモジュールがインストールされており、よく比較されるGoogle Colabratoryのように毎回pipでインストールする必要がなくて楽です。 しかし、デメリットとしてデフォルトの設定では自動補完機能が有効になっていません。

一方で、Google Colabratoryはコードの自動補完機能がついており、Jupyter Labよりもコードを記述するのが楽です。というか主要なコードエディタには自動補完機能があります。

そんな自動補完機能、Jupiter Labでも使いたいですよね?

この記事では、Anaconda環境のJupyter Labで拡張機能を用いた自動補完機能を追加する方法について解説します。

## 前提

– Anacondaがすでにインストールされていること
– Jupyter LabがAnaconda環境内で使用可能な状態であること

#

元記事を表示

VisualStudioプロジェクトの一時ファイル(.ipchや.pch)を簡単に削除する方法

該当するディレクトリを選ぶとそれ以降すべての子階層まで一時ファイルを探して消してくれるスクリプトを作りました。

“`python
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox

def calculate_delete_size(directory):
“””指定されたディレクトリとそのサブディレクトリから.ipchと.pchファイルの合計サイズを計算し、削除対象のファイルリストを返す”””
total_size = 0
files_to_delete = []
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith((‘.ipch’, ‘.pch’)):
file_path = os.path.join(root, file)

元記事を表示

VIFを計算する

以前書いた記事で自由に値を入れてシミュレーションするならVIFを計算して多重共線性を考慮した上で値を入れましょうと書いたことがあります。
今回はそのVIFについて書いていきます。
>独立変数間の多重共線性を検出するための指標の1つ。独立変数間の相関係数行列の逆行列の対角要素であり、値が大きい場合はその変数を分析から除いた方がよいと考えられる。10を基準とすることが多い。
>『統計WEB』より

分かりやすく言えば説明変数間で独立していない変数があります。でじゃあそういう変数ってどういうものかっていうと変数間で相関がある物だと考えてください。
当たり前ですけど変数間で相関があったらそのまま値を入れちゃダメで、相関に基づく回帰した値を入れないと実データと乖離する可能性があり再現性に難がある可能性があります。
そこでVIFを計算して変数間で相関のある変数を削除して全ての変数を独立させます。
ではここからは具体的にプログラムとデータを使ってやっていきま

元記事を表示

OTHERカテゴリの最新記事