RCれこーど

プログラミングについて勉強したことや行ったこと,その他気になったことを記録するブログ(予定)

PyCharmをインストールする際に参考にしたサイト

PythonIDEであるPyCharmをインストールしました.

参考にさせていただいたサイトをメモしておこうと思います.

参考にさせていただいたサイト

学生だと機能無制限版も無料で使えます.

初期設定をする際に参考にさせていただきました.

これから読みたいサイト

パターン認識と機械学習(上)を読む際に参考にしたサイトや資料まとめ

輪講の題材としてパターン認識機械学習(PRLM)の上巻が選択されたのですが,この本は,私にとっては自力で読むにはかなり難しい本であったので,いくつかのサイトを参考にしました.そのサイトをまとめておこうと思います.

[1] インターネット各地に散逸する「パターン認識機械学習」の解説資料を集約するリポジトリ

このサイトには,様々な団体などの勉強会や読書会で作成された,パターン認識機械学習(PRLM)のスライド資料が集められています.

[2] もし天鳳鳳凰民がビショップの『パターン認識機械学習』を読んだら

この資料はcritter様が作成したもので,PRMLの内容が数式をメインとしてまとめられています.

[3] 『パターン認識機械学習の学習 普及版』

『パターン認識と機械学習の学習 普及版』(PDF)

この資料は,PRMLで必要とされる数学的知識についてまとめられたものです.
書籍としても販売されています.

パターン認識と機械学習の学習―ベイズ理論に挫折しないための数学

パターン認識と機械学習の学習―ベイズ理論に挫折しないための数学

[4] 【機械学習勉強会】パターン認識機械学習(PRML)第1章のまとめ Part.1

この記事では,PRML1章の内容についてわかりやすく簡潔にまとめられています.

APIの知識ゼロからPythonでWebAPIを叩いてみる【なろう小説API】

今までAPIというものを使ったことがなかったので,PythonAPIを使ってデータを取得することを試みてみようと思います.
今回使用するAPIは,小説家になろうに掲載されている小説の情報が取得できる,なろう小説APIです.

なろう小説API

  • PythonAPIを利用する方法
    • 使い方を調べる
    • 接続する
    • 繋がったかの確認
    • データの中を確認
  • データの中身の詳細となろう小説APIの利用方法(少々)
    • JSON形式で取得してみる
    • JSON形式でタイトル情報だけ取得する
  • まとめ
続きを読む

【Python】高速かつ簡単にNまでの素数を求めるプログラム【エラトステネスの篩】

Pythonの練習課題として,Nまでの素数を求めるプログラムを「エラトステネスの篩」というアルゴリズムを用いて実装しました.

エラトステネスの篩(ふるい)とは

今回は,wikipediaの解説を元にプログラムを実装しました.
エラトステネスの篩 - Wikipedia

アルゴリズム
指定された整数x以下の全ての素数を発見するアルゴリズム。右のアニメーションでは以下のステップにそって2 から 120 までの数に含まれる素数をさがしている。
ステップ 1
探索リストに2からxまでの整数を昇順で入れる。
ステップ 2
探索リストの先頭の数を素数リストに移動し、その倍数を探索リストから篩い落とす。
ステップ 3
上記の篩い落とし操作を探索リストの先頭値がxの平方根に達するまで行う。
ステップ 4
探索リストに残った数を素数リストに移動して処理終了。

非常にシンプルなアルゴリズムで,個人的には速さよりも実装の簡単さの方が今回はありがたかったです.
エラトステネスの篩の速さについてはこちらのサイトがわかりやすく参考になりそうです.

プログラム

実際にPythonで実装したコードがこちらです.

実行結果

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

正直正しく実装できているかは不安ですが,100までの素数は正しく得られました.

プログラムで解く数学の問題 -Project Eulerやってみた-

最近学び始め,今後使う予定があるpythonの練習のために,以前に存在を知って気になっていた「Project Euler」に登録してみました.

Project Eulerとは

Project Eulerは,プログラムで解く数学的な問題が掲載されているサイトです.
全て英語で書かれていますが,日本語に翻訳しているwikiも存在しています.
Project Euler - PukiWiki

実際に,アカウント登録をしてから問題を解く手順などは,こちらで詳しく解説されています.

実際に問題を2問だけ解いてみました.

問題1

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.
Problem 1 - Project Euler

日本語訳

10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.

同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ. Problem 1 - PukiWiki

解くために書いたソースコード

i = 0
total = 0
for i in range(1000):
    if i % 3 == 0 or i % 5 == 0 :
        total += i
print(total)

実行結果

233168

問題2

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

Problem 2 - Project Euler

日本語訳

フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 数列の項の値が400万以下の, 偶数値の項の総和を求めよ.

Note:この問題は最近更新されました. お使いのパラメータが正しいかどうか確認してください.
Problem 2 - PukiWiki

解くために書いたソースコード

f = 0
pre = [1,2]
total = 2
while f < 4000001:
    f = pre[0] + pre[1]
    pre[0] = pre[1]
    pre[1] = f
    if f % 2 == 0 :
        total += f
print(total)

実行結果

4613732

最初の問題だけあって,私でもなんとか解けるような簡単な問題ですが,問題が進んでいくにつれてどんどん難しい問題も出てくるようです.
問題を解くことで力が身につきそうなので,時間を見つけて出来るだけやっていきたいと思います.

Python入門メモ【数・文字列】

これはPythonについて少し学んだことを復習がわりにメモしたものです.
この記事は数と文字列ついてのメモです.

数と演算

数と変数

#int型
a = 1
print(a)
#float型
b = 1.234
print(b)
#complex型
c = 1 + 2j
print(c)

実行結果

1
1.234
(1+2j)

四則演算

#異なる型同士の計算も可能
#加算
sum = a + b
print(sum)
#減算
rem = a - b
print(rem)
#乗算
mul = a * b
print(mul)
#割算
div = a / b
print(div)

実行結果

2.234
-0.23399999999999999
1.234
0.8103727714748784

剰余・累乗計算

a = 10
b = 3
#剰余
mod = a % b
print(mod)
#累乗
pow = a ** b
print(pow)

実行結果

1
1000

文字列

文字列の定義

a = "cat"
b = 'cat'
print(a)
print(b)

実行結果

cat
cat

文字列の加算と乗算

#文字列の加算
b = a + ' ' + 'dog'
print(b)
#文字列の乗算
c = a * 3
print(c)

実行結果

cat dog
catcatcat

[]による指定

str = 'abcdef'
print(str)
print(str[0])

実行結果

abcdef
a