- 1. 適切なヒストグラムの描き方
- 2. 【Project Euler】Problem 36: 10進数と2進数で回文数
- 3. 【Project Euler】Problem 4: 回文数になる積
- 4. macOSのメニューバーにお気に入りのニュースを表示
- 5. Pythonプログラマが30分でわかるR
- 6. 【Django】フォームを無効化(読み取り専用)にする方法
- 7. vue.jsで「The template root requires exactly one element.」とエラーが表示された時は?
- 8. ヒストグラムを作る(python)
- 9. Linux Mintで画面の自動回転を行う。
- 10. 実行形式ファイルをPythonで作ってみた。
- 11. 気温予想AIを作ってみる
- 12. Pythonで始めるテストツール製作(2)オシロスコープの操作
- 13. 決定木学習の決定境界選定をイメージでとらえる
- 14. GCP(Google Cloud Platform)を使いサーバーレスでWEBサービスを作ってみた。
- 15. 【画像処理】Numpyで大津の二値化(判別分析法)
- 16. 【matplotlib】x軸を上下に、y軸を左右に表示する2つの方法
- 17. 【matplotlib】 グラフの任意の位置に、複数の単位の軸を表示する方法
- 18. EDAツールについて
- 19. 次元削減 1.主成分分析
- 20. 最適化数学まとめ 2.1(勾配法)
適切なヒストグラムの描き方
別の記事で描かれているのはヒストグラムではなく plot.bar による棒グラフです。そこに示されているプログラムは必ず原点から描き始めるので,負の値を含むデータに対応しないとか,原点から大きく離れたデータ群の場合に左側に広大な空間ができるとかの欠点があります。
作者は bin の数を指定した場合に思うようjなヒストグラムにならないと思ったのでしょうが,以下のように bin を階級の区切り値ベクトルで定義すれば,思うような簡単にきれいなヒストグラムが書けます。
以下のプログラム例では,階級幅 classW を指定すれば,bins をベクトル指定するための min_x, max_x を計算します。min_x, max_x を別の計算式で求めるとか,plt.hist の他のパラメータの指定はお好きなように。
要するに,bin をベクトルで指定しましょうということです。例えば,ヒストグラムの特徴でもあるが,bin を不等間隔にすることもできます。
“`Python
# data
data = [84, 63, 77, 65, 82, 70, 76, 69, 69, 72, 77,
【Project Euler】Problem 36: 10進数と2進数で回文数
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 3: 10進数と2進数で回文数
原文 [Problem 36: Double-base palindromes](https://projecteuler.net/problem=36)
**問題の要約:$N<10^6$で10進数と2進数両方で回文数になる$N$の合計を求めよ** 回文数のチェックは「[【Project Euler】Problem 4: 回文数になる積](https://qiita.com/masa0599/items/6d2cb8251213aa810101)」で作った関数**isPalind**を使って作ると以下のようになります。 ```python ans = 0 for n in range(1,10**6): if isPalind(str(n)) and isPalind(str
【Project Euler】Problem 4: 回文数になる積
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 4: 回文数になる積
原文 [Problem 4: Largest palindrome product](https://projecteuler.net/problem=4)
**問題の要約:2個の3桁の数を掛けて回文数になる数の最大値を求めよ**
まず回文数チェック関数**isPalind**を作ります。数字だけでなく文字列全般に使えるように入力は文字列です。文字列も逆順は$[::-1]$で得られます。
“`python
def isPalind(s): # s: string
return s==s[::-1]
“`後は3桁の数の積のすべての組み合わせをitertoolsのcombinations_with_replacementを使って生成し回文数チェックを行います。
“`pyth
macOSのメニューバーにお気に入りのニュースを表示
## 背景
あまりニュースを見ない(新聞もテレビも)という悪いクセがあるので、MacBook Proのメニューバーに、ニュースのヘッドラインを表示できるようにしてみました。
– ニュース提供元ごとに記事をまとめます
– 記事が多い場合、15記事のみ表示します
– 記事をクリックすると、ウェブサイトにジャンプします
– 記事タイトルの頭に「日付-時間:」を表示しますという仕様にしています。
![SS 2022-01-02 8.20.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184128/fec4f3e1-4ef7-2981-8163-106082dc03b4.png)
### 環境
ここで書いていることは、下記のバージョンで実施しました。
– feedparser 6.0.8
– SwiftBar 1.4.2 (386)
– VS Code 1.63.2
– macOS Monterey 12.1
– MacBook Pro (13-inch, 2020, Four Thunde
Pythonプログラマが30分でわかるR
Pythonで統計処理をしているが、Rでコードを書いたことがない方々のために、30分から1時間で読めるR入門を書きました。この記事の R Markdown 文書と実行環境は、こちらの [GitHubレポジトリ](https://github.com/zettsu-t/Rin30minutes) にあります。
## 目次
– [準備](#準備)
– [プログラミング言語Rの基本](#プログラミング言語rの基本)
– [基本型](#基本型)
– [演算](#演算)
– [Assertion](#assertion)
– [ベクトルの要素数とrange](#ベクトルの要素数とrange)
– [リスト](#リスト)
– [DataFrame (tibble)](#dataframe-tibble)
– [Matrix](#matrix)
– [関数](#関数)
– [いろいろな処理と込み入った話題](#いろいろな処理と込み入った話題)
– [文字列処理](#文字列処理)
【Django】フォームを無効化(読み取り専用)にする方法
#やりたいこと
・Formの無効化
・サーバーに送信された場合でも受け取った値を無視する## ModelFormの場合
“`python:
from django import forms
from .models import Sampleclass SampleForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.base_fields[‘hoge’].disabled = True
super().__init__(*args, **kwargs)class Meta:
model = Sample
“`## Formの場合
“`python:
from django import formsclass SampleForm(forms.Form):
hoge = forms.CharField(disabled=True)
“`もしくは
“`python:
from django im
vue.jsで「The template root requires exactly one element.」とエラーが表示された時は?
# 目的
vue.jsでとあるアプリを作ってみようとして下記のようなコードを書いていたところ、inputのところにエラーが表示されてしまった“`vuejs
{{ member.username }}
{{ member.gender }}
{{ member.introduction }}
{{ member.job }}
ヒストグラムを作る(python)
# ヒストグラムをつくるプログラム
タイトルのままです。`matplotlib`標準のヒストグラム(参考:[[Python]Matplotlibでヒストグラムを描画する方法](https://qiita.com/supersaiakujin/items/be4a78809e7278c065e6) )が妙に使いにくいと感じたため、作りました。入力はリスト型のデータ系列(当たり前だがfloat型かint型)と階級幅、出力がヒストグラムの縦軸(各度数)と横軸(各階級幅の上限)。
以下、ソースコード。
データはアジア各国の平均寿命(総務統計局「世界の統計2020」より)。参考サイトは、http://www.stat.go.jp/naruhodo/4_graph/shokyu/histogram.html まで。“`ruby:makeHistgram.py
def makeHistgram(data:list, classW:float)->list:
maxValue = max(data)
histgram = [0] * (int(maxValue / class
Linux Mintで画面の自動回転を行う。
以前メルカリで1万円しないで購入したLenovo YOGA900がメモリ4GB固定でWindows厳しいのでLinux Mint(Cinamon)をインストールしスワップ12GB突っ込んだら意外と使い勝手のいいモバイルPCになりました。
とはいえせっかくヒンジが360度回転するのにモニタが自動で回転しないのがもったいないので色々試してみて上手くいった方法を備忘録として書き残しておきます。合わせてタッチパネルも回転時にずれないように調整する必要があるのでその辺りをまとめて対応しました。## PC情報
| メーカー | 機種名 | CPU | メモリ | OS | バージョン | GUI |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| Lenovo | YOGA 900 | Core(TM) i5-6200U | 4GB | Linux Mint | 20.2 |Cinamon|## 参考にしたサイト
[Ubuntu16.04LTSの画面を自動回転させる](https://qiita.com/ine1127/items/38346ef517706cbc5a1
実行形式ファイルをPythonで作ってみた。
#掲題の通り。
ちゃ○るずに課金しないで使い続けたいという熱い思い、、、
29分に1回再起動するようにしたい、、、
色々やってみた。##準備
Pythonの開発環境として、オールインワンパッケージのanacondaをインストール。##実行形式ファイルのコーディング・作成
“`python
import subprocessfor i in range(10):
subprocess.run(‘open -a cha**es;sleep 1740’, shell=True)
subprocess.run(‘osascript -e \’quit app “cha**es”\’;open -a cha**es’, shell=True)print(“お疲れ〜”)
“`
もちろん、これをそのまま実行してもちゃんと29分に一回再起動してくれます。
ちゃんと実行形式にしてMac起動時に毎回起動するようにします。pyinstallerというフレームワークがいい感じに実行形式ファイルにしてくれるみたいです。(SUGEE…)
“`console
pip i
気温予想AIを作ってみる
#概要
Pythonの機械学習ライブラリScikit-learnを使って明日の気温を予測するAIを作ります!
Python環境はあるものとして、scikit-learnの [データセットを使っての機械学習](https://chusotsu-program.com/scikit-learn-iris/)くらいはできたほうがいいと思います。#環境
OS:Windows
言語:Python
エディター:Geany#データを集める
AIに学習させるための気象データを集めましょう。
今回は気象庁のHPから過去の気象データをダウンロードします。https://www.data.jma.go.jp/gmd/risk/obsdl/
平均気温(℃)、降水量の合計(mm)、日照時間(時間)、最深積雪(cm)、平均風速(m/s)等のデータをダウンロードしましょう。
#AIモデルを決める
学習モデルは様々な種類がありますがとりあえず、種類を見分ける「クラス分類」と数値を予測する「回帰」を知っていればいいでしょう。
Scikit-learnのアルゴリズムチートシートを見てモデルを決めます。!
Pythonで始めるテストツール製作(2)オシロスコープの操作
##1. はじめに
測定のたびにオシロスコープへ手を伸ばしてボタンを操作するのは一日に何度も繰り返すと疲れてきますよね。そこで「[Pythonで始めるテストツール製作](https://qiita.com/pbjpkas/items/0b8a32e2b0e126fab8bc)」で紹介した[Menu Based CLI](https://www.google.co.jp/search?q=Menu+Based+CLI)(メニュー形式のコマンドラインインターフェース)をカスタマイズしてオシロスコープをPCで操作できるようにします。##2. 要件
– 以下の操作ができること
– 機器IDの読み出し
– 垂直軸スケールの取得と設定
– 水平軸スケールの取得と設定
– 波形取り込みの開始(RUN)、停止(STOP)、単発波形の取り込み(SINGLE)
– Vmaxの測定
– 周波数の測定
– [Pythonで始めるテストツール製作](https://qiita.com/pbjpkas/items/0b8a32e2b0e126fab8bc)のmyTools.pyから呼び
決定木学習の決定境界選定をイメージでとらえる
#1. はじめに
決定木学習では、決定木の根から初めて、情報利得が最大となるように分割を行っていきます。
今回はその決定境界がどのようなイメージで選定されるのかを可視化してみました。#2. 決定木学習の題材
データセット:IRISデータ
X[0]:花びらの長さ
X[1]:花びらの幅
クラス数:3![original.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2048607/f3f5ded1-eb6a-e13a-1d4b-8b8519013829.png)
“`python
#データ準備
from sklearn import datasets
import numpy as npiris = datasets.load_iris()
X = iris.data[:,[2,3]]
y = iris.targetfrom sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_te
GCP(Google Cloud Platform)を使いサーバーレスでWEBサービスを作ってみた。
## サービス概要
### プロニチ(プログラミング新聞社)
https://pronichi.com/
定期的にバッチを走らせはてな、Qiita、Twitter、connpassからAPIを通してデータを取得
取得したデータをまとめてWEBサイト・画像にて公開した。こだわりとしてはCloud Run+BigQueryを利用したサーバーレス構成なところ。完全従量課金にしたので初期のアクセスが少ない場合はほぼ無料でサイトを公開することができる。
データベースにBigQueryを使った理由は更新系はバッチ系以外ない、キャッシュすればデータベース参照する必要がない。従量課金で初期費用がかからずSQL構文が使える点、Pandasで加工したデータを簡単に追加できる点などなど## システム構成
Python3系
**パッケージ**
(こう見るといろいろ使ってた?
“`
google-cloud-bigquery==2.6.2
google-cloud-logging==2.2.0
google-cloud-storage==1.36.0
Flask==1.1.2
Flask
【画像処理】Numpyで大津の二値化(判別分析法)
Numpyで画像の二値化を実装してみます。
まず、二値化する画像を読み込み、グレースケール画像に変換します。
“`python
original_image = plt.imread(image_name)
if np.issubdtype(original_image.dtype, np.floating):
original_image = (original_image * 255).astype(np.uint8)
gray_image = (0.2116 * original_image[:,:,0] + 0.7152 * original_image[:,:,1] + 0.0722 * original_image[:,:,2]).astype(np.uint8)
plt.imshow(gray_image, cmap=’gray’)
“`![GrayImage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/81c1c921-681d-6dbc-ea20-3b79
【matplotlib】x軸を上下に、y軸を左右に表示する2つの方法
# 概要
matplotlibでグラフのx軸を上下に、y軸を左右に表示する2つの方法を紹介します。Google Colabで作成したコードは、[こちら](https://colab.research.google.com/drive/1nnKZ0DXImdfJKt2TstkNityHk8RAX7Ns?usp=sharing)にあります。# 方法
1. [twinx](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html#matplotlib-axes-axes-twinx)、[twiny](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twiny.html#matplotlib-axes-axes-twiny)を使い表示する方法
1. [secondary_xaxis](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.seconda
【matplotlib】 グラフの任意の位置に、複数の単位の軸を表示する方法
# 概要
matplotlibの[secondary_xaxis](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.secondary_xaxis.html#matplotlib-axes-axes-secondary-xaxis)、[secondary_yaxis](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.secondary_yaxis.html#matplotlib-axes-axes-secondary-yaxis)を使い、**グラフの任意の位置に複数の単位の軸を表示する方法**を紹介します。
Google Colabで作成したコードは、[こちら](https://colab.research.google.com/drive/13anFd6V1RZ8F4m5ZOql2h-7owNabCnzk?usp=sharing)にあります。# 項目
1. [x軸に別の軸を表示する例](#1x軸に別の軸を表示する例)
1.
EDAツールについて
#EDAとは
探索的データ分析(Explanatory Data Analysis)とは、データサイエンティストがデータに対する理解を深めるために用いる手法です。主にデータの可視化を通して各種統計量や欠損値、外れ値などを見つけます。
今回はEDAに関するツールで便利なものがあったのでまとめます。##pandas-profiling
今回はkaggleの[titanic](https://www.kaggle.com/c/titanic/data)のデータを使います。インストールに関しては[こちら](https://github.com/pandas-profiling/pandas-profiling)を参照
“`python
import pandas as pd
import pandas_profiling as pp
“`“`python
train_df = pd.read_csv(‘train.csv’)
“`“`python
pp.ProfileReport(train_df)
“`
出力結果は長くなるので[こちらの記事](https://q
次元削減 1.主成分分析
#次元削減とは
次元削減とは多次元のデータを要約することにより次元数を減らすことです。
次元削減をすることによるメリットは主に以下の2点です。
・計算資源の節約
・データの可視化ができるようになる場合がある
例えば、身長、体重、ベンチプレス、デッドリフト、スクワットの記録のデータを与えられたとします。(ベンチプレス、デットリフト、スクワットはウエイトトレーニングの種目)
このままこのデータを扱うと、5次元のデータになってしまうので可視化できません。そこで、身長と体重を合わせて体格として、ベンチプレス、デッドリフト、スクワットの記録をまとめてBIG3(一般的に単純に3種目の記録を合算した値をBIG3と言う)とすると、2次元まで次元を削減できます。
上の例とは異なり現実の問題では、より多次元かつどのようにデータをまとめるかが直感的にわからないことがほとんどです。
そこで、次元削減の方法として様々な手法が考案されました。今回はその代表的な手法として主成分分析を扱います。##1.主成分分析(PCA)について
主成分分析(principal component analysis)は、多次元の
最適化数学まとめ 2.1(勾配法)
#関数の最適化について
基本的に最適化数学では、ある関数の最大(最小)を知ることに関心があります。(ニューラルネットワークにおける損失関数を最小化する問題など)(そもそも関数の最適化とは最大最小を求めること)
高校で習う数学においては、微分をすることによって最大、最小を求める(解析的に解く)ことができますが、実際の問題を解く際には対象の関数が微分不可能である場合の方が多いです。(コンピュータでは極限、無限小は扱えない、MLでは関数が複雑になりがち等の理由のため)そこで、数値微分という方法を使って、数値的に問題を解く方法が考えられました。数値微分とは、微分の定義 $f'(x) = lim_{h\to0}\frac{f(x + h)-f(x)}{h}$から極限の操作を取り除いた$f'(x) = \frac{f(x+h)-f(x)}{h}$において、$h$の値を手動で小さな値(0.0001など)にすることで微分計算の近似をするものです。この方法は2点近似と呼ばれます。
一般的には$f'(x) = \frac{f(x+h)-f(x-h)}{2h}$(中心差分公式)の方が近似の精度が高いため