Python関連のことを調べてみた2023年02月01日

Python関連のことを調べてみた2023年02月01日
目次

【Pyinstaller】MacOS用、Windows用のexeをそれぞれ作成する失敗しない方法

# はじめに
**Pyinstaller**を使ったPythonスクリプトのexe化方法を紹介します。
Pyinstallerは、Macで動かす場合はMacOSで作成、WindowsならWindows上で作成、というように、**動かしたいOS上でそれぞれ作成する必要**があります。
失敗せずに作成できるそれぞれのOS用コマンドなども合わせてご紹介します。

# exeを作成する
### 1. 仮想環境を作成する
Pyinstallerでexe化する際、仮想環境外でexe化をするとPC上にpipでインストールされている全てのライブラリを含んでしまいます。仮想環境でexe化することで、軽量なexeファイルを作成できます。

ディレクトリ構成は以下のようにします。
“`
MyProject
└─ my_app
└─app.py <--exe化対象のスクリプト ``` ターミナルでMyProjectに移動し、仮想環境を作成します。 ```terminal: terminal $ cd MyProject $ python -m venv .venv ``` `MyProje

元記事を表示

現状最大規模を誇る言語モデルdeberta-v2をCommonsenseQA用にファインチューニングして公開してみた

こんにちにゃんです。
水色桜(みずいろさくら)です。
今回は現状日本語モデルで最大規模を誇る言語モデルdeberta-v2-base-japaneseをファインチューニングして、CommonsenseQA(常識を問う選択式の質問)タスクを解いてみようと思います。
作成したモデルは[こちらのサイト(Hugging Face)](https://huggingface.co/Mizuiro-sakura/deberta-v2-japanese-base-finetuned-commonsenseqa)で配布しています。
初心者でも簡単に使えるようにしているのでぜひ使ってみてください。

https://huggingface.co/Mizuiro-sakura/deberta-v2-base-japanese-finetuned-QA

# 環境

pandas 1.4.4
numpy 1.23.4
torch 1.12.1
transformer 4.24.0
Python 3.9.13

# deberta-v2-base-japaneseとは?

日本語Wikipedeia(3.2G

元記事を表示

【Python】時刻を10分毎に時間を丸める処理を自分で書くかChatGPTに任せるか

# 時間を10分単位で丸める処理を書きたい!
例えば
“`
05時34分 → 05時30分
10時13分 → 10時10分
“`

とする関数が欲しくなりました。そもそも10分でまるめるという日本語合ってますかね?
適当に調べて書いた自分のコードがこちら

“`python:自分で書いた.py
import datetime
from datetime import timedelta
def ten_minutes_rounder(t):
return (t.replace(second=0, microsecond=0, minute=0, hour=t.hour) + timedelta(minutes=round(t.minute, -1)))

dt = datetime.datetime.now()
rounded_time = ten_minutes_rounder(dt)
print(rounded_time)
“`

これで結果は正しそうです

# もしかしてChatGPT君ならもっと良いコードが書ける?
この程度ならChatGPTにまかせてよかったの

元記事を表示

回帰直線をPythonで引きたいならどうする?

# はじめに
問題
+ 回帰直線をPythonで引きたいならどうする?
+ notebookを使用している

# 方針・解法
matplotlibとseabornを使おう!

# 解答例
~~~python
import seaborn as sns
%matplotlib inline

width = 12
height = 10
plt.figure(figsize=(width, height)) # 縦と横の大きさを決める

# 実際に線を引く
sns.regplot(x=”hogehoge”, y=”hogehoge”, data=あなたが分析したいデータ)
plt.ylim(0,) # Xの下限を0に設定する
~~~

# 参考文献
[Estimating regression fits -seaborn-](https://seaborn.pydata.org/tutorial/regression.html)
[【初心者向け】seaborn入門 | Pythonを使ってデータを綺麗に可視化してみよう!](https://aiacademy.jp/media/

元記事を表示

Databricks認定データエンジニアアソシエイト公式練習問題を翻訳&解説してみた

# 目次
– [はじめに](#はじめに)
– [練習問題](#練習問題)
– [おわりに](#おわりに)

## はじめに
こんにちは。データブリックスの新井です。
皆様は、Databricksデータエンジニアアソシエイト試験の公式練習問題([リンク](https://files.training.databricks.com/assessments/practice-exams/PracticeExam-DataEngineerAssociate.pdf?_gl=1*fc25hk*_gcl_aw*R0NMLjE2NzM1ODQxNzkuQ2owS0NRaUFfUDZkQmhEMUFSSXNBQUdJN0hEd2N5VGF0Q2c1b1d1ZWtmbEI1NGJyUlNoZ3FRMml5dDU1Qk1MQVJ2ekJ4V3lRZ19lNGhiOGFBblRqRUFMd193Y0I.&_ga=2.137779184.1374445668.1674439011-883617126.1665065174&_gac=1.58542808.1673584179.Cj0KCQiA_P6dBhD1

元記事を表示

【Python】サイコロクラスはどのように実装するのが最適か

読者のあなたならどのような実装を行うかイメージしながら読んでみてほしい。

**条件**
『サイコロを回すクラス』から利用されることを念頭に置く。
このサイコロクラスは、サイコロを渡されると、ランダムに値を選択する処理になっている。

**題**
サイコロクラスはどのように実装を拡張するのが良いか
6面,8面サイコロ…というように作成していくとする。

“`python:サイコロを回すクラスの実装例(サイコロクラスは仕様のみ定義)
import random
import abc

class Dice(abc.ABC):
“””
サイコロの仕様
“””

__slots__ = () # インスタンスの属性追加を不可にする。

@property
@abc.abstractmethod
def numbers(self) -> set:

class DiceRoller:
“””
サイコロを回す役割
ランダムに出目を選択する。
“””
def __i

元記事を表示

streamlitでexcel形式のファイルをダウンロードする方法

# はじめに
Pythonのみで記述できるお手軽webフレームワークであるstreamlitはHTMLやCSSの勉強の必要がなくちょっとしたものを作るには非常に便利です。しかしその反面で標準搭載されている機能も少なく、場合によっては自作する必要があります。
今回、結果を出力する際にexcel形式(.xlsx)を利用しようとしたのですが、少々つまずいたので備忘録として残しておきます。

# 内容

“` py
from io import BytesIO
import pandas as pd
import streamlit as st

def df_to_xlsx(df):
byte_xlsx = BytesIO()
writer_xlsx = pd.ExcelWriter(byte_xlsx, engine=”xlsxwriter”)
df.to_excel(writer_xlsx, index=False, sheet_name=”Sheet1″)
##—–必要に応じてexcelのフォーマット等を設定—–##
workboo

元記事を表示

機械学習初心者におすすめなkaggleの表形式データセットを調査してみた

機械学習の学ぶとき、まず最初に取り掛かるのは表形式のデータであることが多いと思います。
その時使うデータって、以下のようなものが多いのではないでしょうか。

– Titanic
– Iris
– Boston Housing
– Wine
– Breast Cancer

これらのデータを使って機械学習の手法やテクニックを覚えた後は、色々なデータを使って覚えた手法を試したくなります。
ですが、ちょうどよいデータってなかなか見つからず、データを探しているうちに勉強熱が冷めることもしばしば。。
特に教員をやっていると、学生向けに演習問題をたくさん用意したいのですが、その題材が見つからないといったことが頻繁に起こります。

そこで、kaggleにある表形式のデータセットの中から初心者向きそうだと感じたものをいくつか調べました。
皆さんの機械学習の勉強や、誰かに教える際の演習問題の材料として参考にしてください。
コメントは自分用のメモなので、あくまで参考程度に。

また分析した結果をまとめたnotebookは以下から取得できます。
https://github.com/daifu

元記事を表示

Django から S3 へ画像をアップロードする Example

:::note info
Githubで公開している内容(READMEの内容)です。
ソースコード → https://github.com/takux/example-django-s3
:::

:::note info
Django関連コースを出しているのでこちらもぜひ
→ https://www.takux.one
:::

## Django プロジェクトの作成

必要に応じて仮想環境作成。

“`
python3 -m venv venv
“`

Django プロジェクトの作成。

“`
django-admin startproject myconfig .
“`

Django App の作成。

“`
python manage.py startapp myapp
“`

## 必要なライブラリのインストール

“`
pip install Django django-environ boto3
“`

Django: フレームワークとして使用
django-environ: 環境変数読み込み用に使用
boto3: S3 へのアップロードに使用

元記事を表示

Atcoder ABC-267 C問題、D問題解説 [Python]

# はじめに
個人的な事情により使用言語をC++からPythonに変更した。C++の解説はAtcoder公式をはじめ、最もメジャーで多くの人が既に解説している。今回からはコード量が少なく簡潔にコーディングできるだけでなく、ライブラリも充実しているPythonを用いる。
## 1. 267-C問題
### 問題
長さ $N$ の整数列 $A = (A_1,A_2,…,A_N)$ が与えられる。
長さ$M$ の$A$ の連続部分列$B = (B_1,B_2,…,B_M)$ に対する $\sum_{i=1}^{M} iB_i$ の最大値を求めよ。

### 制約
$1\leq M\leq N\leq 2 \times 10^5 $
$-2 \times 10^5 \leq A_i \leq 2 \times 10^5 $

### 解法
整数列$A$の部分列は全部で$N-M+1$通り、部分列の文字数は$M$となり線形探索を行うと計算量は$O(N(N-M+1)) = O(N^2)$ となりTLE(実行時間制限オーバー)となってしまう。よって何かしらの工夫を施す必要があるとこ

元記事を表示

オープンソースAI【Whisper、GPT3、GoogleTextToSpeech】を用いた音声対話ロボットの作成

# 概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687015/27d304f0-e427-d068-a36b-47194a4ebefd.png)

この画像にあるように、マイクで話しかけて、AIに回答を考えてもらい、その結果を音声として出力する、というものを作成しました。ロボットと対話できます。

**全てGoogleColabの環境でできます。**

[こちらの方の記事内容](https://qiita.com/kunishou/items/814e837cf504ce287a13)をオマージュさせていただいてます。

## 環境

## 利用するライブラリ

主に4つ使ってます。

“`
gTTS # ← GoogleTextToSpeechという音声合成のためのライブラリです
whisper
langchain
openai
“`

### ライブラリの入れ方
全て“`pip“`で入れることができます。

“`
pip install gTTS
pip in

元記事を表示

リストでインデックスを取得してくれる便利な奴

enumrate関数

string = “aiueoeoeo”
for index , variable in enumrate(string):
#0,1,2,3……
print(index)
#a,i,u,e……
print(variable)

元記事を表示

オープンソース【LangChain/OpenAI/Gradio】を使ったChatGPTライクな会話チャットボットの作成

# 概要
OpenAIのGPT3を使い、会話をするためのチャットを構築します。
最近話題のChatGPTのようなものを自分で作ってみたい人向けの記事となります。

最終制作物のイメージはこんな感じです。

![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687015/b0b3b186-c3f4-568b-6039-3f2894401240.png)

[コード全文はGithubにアップロード](https://github.com/KENTAROSZK/ChatBotByLangChain/blob/main/MyOriginalChatBotForGitHub.ipynb)しているので、そちらを見てください。

ChatGPTはナチュラルな会話ができるすごいAIですが、**弱点が2つ**あると筆者は認識しています。

①最近の出来事について対応できていない。ChatGPTの学習元データは2021年までのデータなので、2022年以降の出来事(例えば、ワールドカップなど)について聞いてもで

元記事を表示

AIに頼り切って発明してみた

# はじめに
私の嫌いな作業の一つにブレインストーミングがあります。その理由は、一生懸命出したアイデアにダメ出しする人がいたりしてやる気を失うことが多く、また、数を出せというプレッシャーが逆に思考力を奪ったりするからです。

一方、AIは数を出すのは得意であり、また、ダメ出ししてもめげることはありませんので、このような作業はAIが適任ではないかと考えました。

そこで、最近のテクノロジーを利用して、AIにアイデア出しをさせ、あわよくば、発明にまとめられればと考え、試してみました。
# 進め方
今回は家庭用ドローンを題材にして新規発明を考えたいと思います。主に家の中で使用しますので、安全性と小型軽量化が課題となります。この課題解決に必要な構成を、文書穴埋め方式でAIにアイデアを出してもらいます。人間の役割は、AIのアイデアを評価し、穴埋め用の文書を作成することと、最後に発明を請求項の形式にまとめることになります。
# ツール
プログラミングツールには、Google Colaboratoryを使用しました。ディープラーニングとなりますと我が家のボロパソコンではどうにもなりませんので、Goo

元記事を表示

Python実践してみての感想

# 概要

5年間ぐらいJavaでお仕事をしていて、現在はサーバーサイド言語としてPythonを使ってお仕事をしています。
まだ3ヶ月間なので全然慣れていませんが、そんなときにどういうことを思っていたのかということを備忘録として残しておきます。

## self, clsを書く違和感

インスタンスメソッド, クラスメソッドを定義する際に、必ず第一引数に`self`, `cls`(名前はなんでもいいが慣例としてself, clsを使用)を書く必要があるという仕様について。
今まで書いていなかったのでやっぱり違和感ありますね~。

自分自身のインスタンスを表すという意味で、これはJavaで言うなら`this`にあたると理解しています。

言語仕様として絶対に`self`, `cls`を書かなきゃいけないのであるなら、最初から`this`みたいに用意しておけばいいのに…って感覚ですね。
[The Zen of Python](https://peps.python.org/pep-0020/#the-zen-of-python)の`Explicit is better than imp

元記事を表示

Pythonチートシート – Dict型の使い方一覧

## Pythonのディクショナリーについて¶
dict型のデータは、一意のキーと値のペアを使って管理される型です。
自然言語処理を行う際や、言語を翻訳したいときに役立ちます。

言語によってはディクショナリーはハッシュ・連想配列と呼ばれます。 dict型のデータ構造は、ハッシュ表という数値型のテーブルをキー・値と対応させるという 内部構造となっています。そのためdict型のデータはハッシュアブルな型を用いなければならりません。

Pythonではint, str, bytes, tuple, frozenset等がハッシュアブルな型となっていて、通常、dict型のキーはintかstr型とします。

### ディクショナリーの内容を参照する

“`python
d = {“apple”:”りんご”, “orange”:”みかん”, “melon”:”メロン”}

d[“apple”] = “アップル”
d[“strawberry”] = “いちご”

#setdefaultメソッドはキーが存在しない場合のみ値を設定するのに用いる
d.setdefault(“apple”,”Go

元記事を表示

二値分類で使えそうなkfold~等しい割合でsplit~

二値分類で0,1を等しい割合でsplitしたい!!

そんなときはコレ!!!!!

“`
kf = StratifiedKFold(n_splits=7, shuffle=True)
for train_index, test_index in kf.split(x, y):
“`

元記事を表示

Python 連続ソケット通信(コマンド引数 分ループを回し、csvファイル出力)

### 使い方

・コマンドラインで、「python server.py 0 6000」と、0 = ループ開始位置 6000 = ループ終了位置

・もう一つのコマンドプロンプトで、「client.py」を叩く。
![スクリーンショット (617).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/68a89745-5c80-0558-2249-2e6b7a49c197.png)

### 作成意図

・連続でソケット通信をしていると、エラーが起きると言われ、その改善の為に作成。

### ソースコード
#### server.py
“`python server.py

import socket # socketライブラリをインポート
import datetime
import pickle
import sys

class Date_To():
# ============ 日時・時刻 ク

元記事を表示

py4cl 機能メモ

# TL;DR
“`
(ql:quickload :py4cl)
(py4cl:python-exec “import numpy as np”)
(py4cl:python-eval “np.array([1, 2, 3])”) ; #(1 2 3)
“`

# 機能紹介
`py4cl`でできることを[公式gitの内容](https://github.com/bendudson/py4cl)に補足をしつつ、列挙していく。`(ql:quickload py4cl)`実行済みを前提とする。

## import系

### `import-module`
簡単なimportだけが可能で、`from … imoprt …`や`import datetime.datetime`は後述の`import-function`/`python-exec`を利用する必要がある。引数の文字列は展開されない。
“`common-lisp
(py4cl:import-module “numpy” :as “np”)
(np:arange 0 5 1) ; #(0 1 2 3 4)
(let (

元記事を表示

【Python】Seleniumでやさしい神経衰弱ゲームを最速攻略する?

弊社[mori_goq](https://qiita.com/mori_goq)の作成した[やさしい神経衰弱ゲーム](https://qiita.com/mori_goq/items/5607f99ca7eb0e615cbe)をやってみたところ、過去にワギャンランド?で鍛えたはずの記憶力の衰えを実感し、悔しくなったため技術力で攻略してやろうと思いました。
![スクリーンショット 2023-01-29 18.28.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359978/a1dbd6e3-5767-deeb-cd22-8f10b328a949.png)

## 攻略本を読む?
リポジトリという名の攻略本が公開されているので読み解いていきます。

https://github.com/mori-goq/easy-memory-game

### シャッフルの待機時間⏳

“`tsx
const SHUFFLE_COUNT = 3
const SHUFFLE_DURATION = 500

// シ

元記事を表示

OTHERカテゴリの最新記事