Python

全360件中1~20件表示
  • 報酬付き

    Pythonコードを教えて

    以下のコードを教えてください。 前提:PandasをつかってCSVファイルを読み込んである。RouteListという配列に格納してある。「路線番号」と「色」の2つのカラムがある。 実行したい操作:RouteListの「色」のカラムだけを抜き出して配列Colorsに格納する。

  • python:関数が複数globalを読むロジック

    pythonの次のコードがあります #------------------------------------ #code default_name = "Ichiro" def kyodai1(name=default_name): return f"Hello {name}," def kyodai2(name=None): if name is None: name = default_name return f"Hello {name}." default_name = "Jiro" print(kyodai1(), kyodai2()) # 出力 # Hello Ichiro, Hello Jiro. #----------------------------------- kyodai2()関数では、 name = default_name とあり、default_nameは最初の行の"Ichiro"を呼ぶかと思ったら、関数の下にある"Jiro"を読みに行っています default_nameはglobal変数として default_name = "Ichiro" があるのに、def kyodai2()関数だけ default_name = "Jiro" を読みに行った理由がわからずにいます このロジックを3つのAIにコードを読ませて説明させたところ、うち1つが 「(kyodai2スコープ内で)default_nameが定義されていません。この場合、default_name = "Ichiro"ではなく、default_name = "Jiro"を参照します」 と答えました 質問: この説明が正しいかどうかもわからないのですが、なぜkyodai2()関数は、最初のIchiroではなくJiroを読みにいくのでしょうか? Tutolialで該当箇所がわからずにいます 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • 報酬付き

    Pythonについて

    Pythonはスマホのメモ帳などでもできるの ですか? htmlやcssは、メモ帳(テキストファイル)を ファイルに保存して拡張子を.htmlにすれば 機能するのですが、Pythonではできるの でしょうか? また、変数など、どのようにしてPythonと htmlを連携?すれば良いのでしょうか?

  • 報酬付き

    Scikit-learnを利用してデータの分類

    Scikit-learnを利用してデータの分類を行いたいと考えております。 ★検証したいこと マスタデータの名称、大分類CDを元に小分類CDを予測する 現状で実現できたこと ・学習モデルを生成(MLPClassifier)/保存 ・分類対象データを訓練データ/テストデータに分割 ・fitを利用して学習 ・predictを利用してテストデータの予測  ※精度は65%程度   実現できないこと ・ロードした学習モデルを呼び出して新たな分類対象データを  もとにpredictを行うと予測結果の精度が低い(1件も正しい予測がされない) 基本的な知識が欠落していることも想定され、大変恐縮ですが、ご存じの方がいらっしゃればご教授頂けますと幸いです。 yosoku.py ========================================== import os import sys # パラメータ渡しに必要 # [Scikit-learn] [サイキットラーン]機械学習ライブラリ from sklearn import datasets # サンプルのデータ from sklearn.neural_network import MLPClassifier # [ニューラルネットワーク]アルゴリズム from sklearn.model_selection import train_test_split # 訓練データ】と【テストデータ】を簡単に分けることができるライブラリ import sklearn as skl # [サイキットリーン]機械学習用ライブラリ import numpy as np # [ナンパイ]数値計算用ライブラリ import pandas as pd # [パンダス]データ解析ライブラリ import matplotlib.pyplot as plt # [マットプロットリブ]画像描画用のライブラリ import joblib as job # 学習モデルの保存/ロード #from sklearn.externals import joblib # 学習モデルの保存/ロード from datetime import datetime debug = "1" # DEBUGモード 0:ログ出力なし 1:ログ出力あり Dip_Glaf = "1" # グラフモード 0:なし 1:表示あり if debug == "1": print('*****************商品分類 予測 開始*****************') ret = "0" # 戻り値 try: filename = 'Hin_Bunrui_model_' filename = filename + datetime.now().strftime('%Y%m%d') + 'sav' df = pd.read_csv('test_BUNRUI_20620_2_kensyou.csv', encoding='shift_jis') # 品名を10新数に変換する事である程度法則性を持った値となるため品名も機械学習に有益となる print('*******品名10新数変換*********') for index, row in df.iterrows(): str_wk = row['HIN_NAME'] # DataFrameの品名を変数にセット str_wk2 = str_wk.encode('utf-8', 'replace').hex() # 品名を16新数に変換 [0x99のような形式] df.at[index, 'HIN_NAME'] = int(str_wk2,16) # 16新数の品名を10新数に変換しdataFrameを更新 #------------------------------------------------------------------------------ # 文字列カテゴリーを数値化する #------------------------------------------------------------------------------ #print('[HIN_NAME_SUB]の数値化') data = pd.factorize(df.iloc[: , 3]) df["HIN_NAME_SUB"] = data[0] # 0列目に変換後の値 1列目に変換前の値 #print('[HIN_NAME_SUB2]の数値化') data = pd.factorize(df.iloc[: , 4]) df["HIN_NAME_SUB2"] = data[0] # 0列目に変換後の値 1列目に変換前の値 print('[BUNRUI_SYO_NM]の数値化') data = pd.factorize(df.iloc[: , -1]) df["BUNRUI_SYO_NM"] = data[0] # 0列目に変換後の値 1列目に変換前の値 skl_Data = skl.utils.Bunch() # [target]目的変数[正解ラベル]にCSVデータの[Bunrui](分類CD)をセット skl_Data['target'] = df['BUNRUI_SYO'] print("***** 正解ラベル セット完了 [BUNRUI_SYO][小分類CD] *****") skl_Data['data'] = df.loc[:, ['HIN_NAME_SUB','HIN_NAME_SUB2', 'HIN_KBN', 'BUNRUI_DAI', 'BUNRUI_CHU' ]] skl_Data['feature_names'] = [ 'HIN_NAME_SUB','HIN_NAME_SUB2', 'HIN_KBN', 'BUNRUI_DAI', 'BUNRUI_CHU' ] if os.path.isfile(filename): print("ロード") # ★機械学習モデルが存在する場合はロード clf = job.load(filename) else: # ★機械学習モデルが存在しない場合は新規作成 print("新規作成") clf = MLPClassifier(hidden_layer_sizes=10, activation='relu',solver='adam', max_iter=500) print("予測 ") # 戻り値で予測結果を戻す [skl_Data['target'] = df['Bunrui']]なので分類CDが戻る print(clf.predict(skl_Data['data'])) # 戻り値で予測結果を戻す [skl_Data['target'] = df['Bunrui']]なので分類CDが戻る print("正解 ") print(df["BUNRUI_SYO"]) except Exception as E: sys.exit() # 処理終了 # 戻り値格納(正常終了) print("Result {0}".format(ret))

  • python: nonlocalとglobal文

    pythonで次のような関数の書き方がチュートリアル本に書かれていました ------------------------------------------- スコープと名前空間の例 def scope(): loc = "abc" def do_local(): loc = "local" def do_nonlocal(): nonlocal loc loc = "nonlocal" def do_global(): global loc loc = "global" ------------------------------------------- VS Codeでブレークポイントを置き走らせ、 nonlocal loc → loc = "nonlocal" global loc →loc = "global" の代入(バインディング?)が起こることはわかりました チュートリアル本では、nonlocalとglobalは次のように書かれています 説明文 nonlocal文 その変数が自分を取り囲むスコープにある global文 その変数がグローバルスコープにある 質問; 上の2行(説明文)の 1)nonlocal文 その変数が自分を取り囲むスコープにある 2)global文 その変数がグローバルスコープにある これらのスコープが何、どこ、どのように、指しているか教えてください また 3)これらと名前空間の関係をわかりやすく教えてください (本ではわからず) 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • python: 例外classの書き方

    pythonで独自の例外classの書き方をチュートリアルで見ていて気づいたことがあります 次のような記載をみつけました class wexal(Exception):  pass 質問の都合上次のように書き換えます class abcde(Exception): 質問: 1)独自の例外クラスの書き方は、(Exception)と記載すれば、abcdeのように名称はなんでも指定できると考えてよいでしょうか 2) Guido van Rossum さん著書のチュートリアル本(ISBN-13 ‏ : ‎ 978-4873119359)をみていると、class の記載の後の名称の最初の文字は大文字になっているものが多くあります  上記で abcdeの部分は、Abcdeでなくても作法上問題ないのでしょうか。つまり(Exception)を記述するときは、最初の文字を大文字にする必要は作法上はないのでしょうか 他の例外の処理については、今回は求めていません。独自例外classの書き方についてのみ質問しています。 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • Python 間違いを指摘して

    import pandas as pd import folium df=pd.read_csv("バス停.csv") df=df[["路線番号","緯度","経度"]].values m=folium.Map(location=[35.942957,136.198863].zoom_start=16) for route in range(17): df2=df[["路線番号"]==route+1] df3=df2[["緯度","経度"]].values folium.PolyLine(df3).add_to(m) m.save("sabae.html") エラー IndexError: only integers, slices, ellipsis, numpy.newaxis and integer or boolian array are valid indices

  • Python 間違いを指摘してください

    以下のPythonコードの間違いを指摘してください。 import pandas as pd import folium df=pd.read_csv("店舗.csv") store=df[["緯度","経度"]].values m=folium.Map(location=[35.942957,136.198863],zoom_start=16) for data in store: (インデント)folium.PolyLine([data[0],data[1]]).add_to(m) m.save("savae.html")

  • 作成するデスクトップアプリのzip化がしたい。

    まだ作成途中ですがこれをデスクトップアプリにしてzip化をしたいと思っています。 import tkinter root = tkinter.Tk() root.mainloop() しかし、pip install pyinstallerでインストールしようとしてもこのようなエラーが出てしまいます。どうすればいいですか。 PS C:\作業用Python> & C:/Users/user/anaconda3/python.exe c:/作業用Python/HelloWorld/install.py File "c:\作業用Python\HelloWorld\install.py", line 1 pip install pyinstaller ^^^^^^^ SyntaxError: invalid syntax PS C:\作業用Python>

  • pythonZeroDivisionError例外

    下記はAIによる説明です 「第二引数」でexceptionとなるのはわかりますが、 「第一引数に対しては、ZeroDivisionErrorは送出されません」 とあります 質問: 1)exception ZeroDivisionError が第二引数のみに適用される理由(または背景) 2)出力が Error: division by zero となる理屈 を教えてください #Aiの説明 ZeroDivisionErrorは、除算や剰余演算の第二引数が0であった場合に送出されます。第一引数に対しては、ZeroDivisionErrorは送出されません。以下は、ZeroDivisionErrorの例です。 #code try: a = 5 b = 0 c = a / b except ZeroDivisionError as e: print(f"Error: {e}") #Error: division by zero 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • pythonの8進数表記

    print('\141')の141が8進数として解釈される理由がわかりません。0oついていないのに、なぜ10進数ではなく8進数になるのでしょうか?

  • pythonのリスト内包?に用いるアルファベット

    リスト内包かどうか確信が持てないでいますが、下記はどちらも動作します コード1のrow コード2のi は、何のアルファベットを用いても動作しますが、何と呼ばれるものでしょうか? 代数、変数、その他? チュートリアルでこの名称とふるまいについて説明した該当箇所がみつけられないので、質問いたしました #コード1 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] saburochu = [row[2] for row in matrix] print(saburochu) # [3, 6, 9] #コード2 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] saburochu = [i[2] for i in matrix] print(saburochu) # [3, 6, 9] 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • pythonの辞書型「ペア」のバリエーション

    pythonの辞書型「ペア」のバリエーション pythonの辞書型は、わたしの集めた情報だと次のような書き方というか認識をしていました 「辞書型はキーと値のペアを要素とするデータの型」 :でペアをつくり、{}で記述をはさむ # 例 my_dict = {"key1": "ichigo", "key2": "apple", "key3": "orange"} print(my_dict["key1"]) # 出力 ichigo ところが次のコードは、keywords引数にあたるところに = で要素が入っています #---コード---------------- def shop(name, *arguments, **keywords): print("店名", name) for arg in arguments: print(arg) print("===おすすめ===") keys = sorted(keywords.keys()) for kw in keys: print(kw, ":", keywords[kw]) shop("らーめん八郎","11時開店","20時閉店",osusume1="醤油ラーメン", osusume2="チャーシュー麺",osusume3="わんたん麺") #---コード---------------- この記述が謎だったため、Bing AIに聞いたところ、これ(osusume1="醤油ラーメン"...)も辞書型とのことです 質問 {}で記述をはさんでいない、かつ、[]でキー指定もしていいない(print(my_dict["key1"]) のような) ですが、これはこれは正しいですか?(辞書型ですか?) これが辞書型なら、他にも「キーと値のペア」を書くバリエーションがあったらご教示ください

  • python: def関数での記述arg=

    python: def関数での()記述内にarg=を書く意味と働き pythonで、defで関数定義をする際、引数を並べるやり方は理解したのですが、arg = と記述する意味ができずにいます 図のAでは実行すると100を出力します 5行目 f(arg = i)の ”arg =” の文法というか、これがはたしている役割がよくわかりません ためしにBのように arg= を撤去して、引数をiたった1つにすると9行目でエラーになります ( f(i)とするとエラーにならない) Cがエラー出ない理由もわかります 質問: 1) Bにおいて、5行目で arg = の果たしている役割を教えてください 2) Bにおいて9行目でf()では関数を呼び出せていないのは、arg = の不在と関係あると想像できますが、そのロジックを教えてください 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします

  • for文内のelseに飛ぶ理由

    pythonの次のようなコードがあり、 for文:  for文:  else: となったとき、いきなりelse内に飛ぶ挙動の説明をお願いします #--コード-- #UTF-8 for n in range(2, 5): for x in range(2, n): if n % x == 0: print('xは ' + str(x)) print('nは ' + str(n) + ' は割り切れる') break else: print(n,' は素数') continue break #---- WindowsのVS Codeで赤いブレークポイント(以下 BPn:nは行数)を画像のように置き、変数nとxの挙動をみていたところ、実行直後に n が 2 となり、BP4にに遷移するのは理解できます で、想定していたのは、5行目にxがあるので、 BP5 if n % x == 0: を試してからBP10へ飛ぶと予想してました しかし実際には、BP4→10と遷移しています この挙動で、5行目でストップしなかった理由を教えてください 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします python 3.10.8

  • 【python】機械学習(教師あり)画像認識にて

    調べてもどうしてもわからない部分が有り すいませんが質問させていただきます。 【目的】 薬品容器を認識して容器の数を数えたい。 ※機械学習(教師あり)にて容器の認識をしたいと考えております。 モデル学習する前にデータセットとして 薬品容器のアノテーション作業をLabelMEというツールで 容器のアノテーションを行い、ラベル付けしてjsonファイルにて保存しました。 (デスクトップの機械学習というフォルダにjsonファイル入れています。) 【質問】 このデータセットというのは アノテーションした後のjsonファイルのみあれば モデルの学習はできるのでしょうか? モデル学習のコードを組んでみたのですが エラーが出てしまい具体的には、アノテーションデータに 'image_path' が存在しないとの事でした。 ・画像データが欲しいってことですか?  この場合jsonファイルと元画像jpegがあればモデルの学習が  出来るのですか? 実行時 Loaded dataset from 133 JSON files. Total samples in the dataset: 0 と出るので、データセットの中身が0と出ているような気がします。 コード一応貼ります。 import os import json import cv2 import numpy as np from sklearn.model_selection import train_test_split from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.applications import VGG16 from tensorflow.keras.preprocessing.image import ImageDataGenerator # データセットのパス json_folder_path = r'C:\Users\Desktop\機械学習' # データセットの読み込み def load_dataset(folder_path): dataset = [] for filename in os.listdir(folder_path): if filename.endswith(".json"): file_path = os.path.join(folder_path, filename) with open(file_path, 'r') as file: data = json.load(file) dataset.append(data) # appendを使用してリストに追加 # アノテーションデータを表示 print(f"Loaded dataset from {len(dataset)} JSON files.") return dataset # データセットの整形 def preprocess_dataset(dataset): images = [] boxes = [] for data in dataset: # 'image_path'が存在する場合のみ処理を行うように修正 if 'image_path' in data: image_path = data['image_path'] label = data.get('label', None) # 'label'が存在しない場合はNoneを返す box = data.get('box', None) # 'box'が存在しない場合はNoneを返す if label and box: image = cv2.imread(image_path) # OpenCVを使用して画像を読み込む images.append(image) boxes.append(box) return np.array(images), np.array(boxes) # データ拡張の設定 datagen = ImageDataGenerator( rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest' ) # メインの実行部分 if __name__ == "__main__": # データセットの読み込み dataset = load_dataset(json_folder_path) # データセットの整形 images, boxes = preprocess_dataset(dataset) # データセットのサイズを確認 print(f"Total samples in the dataset: {len(images)}") # 訓練データとテストデータに分割 X_train, X_test, y_train, y_test = train_test_split(images, boxes, test_size=0.2, random_state=42) # データ拡張を適用 for i in range(len(X_train)): img = X_train[i] box = y_train[i] img = np.expand_dims(img, axis=0) box = np.expand_dims(box, axis=0) for j, (img_aug, box_aug) in enumerate(zip(datagen.flow(img, box), datagen.flow(box, box))): if j == 1: # 1回目のデータ拡張だけを適用 X_train = np.vstack((X_train, img_aug)) y_train = np.vstack((y_train, box_aug)) break # モデルの構築(VGG16を利用した転移学習) base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) base_model.trainable = False model = keras.Sequential([ base_model, layers.Flatten(), layers.Dense(256, activation='relu'), layers.Dense(4) # 出力層のノード数は物体の座標情報による ]) # モデルのコンパイル model.compile(optimizer='adam', loss='mean_squared_error') # モデルのトレーニング model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test)) # テストデータでの評価 test_loss = model.evaluate(X_test, y_test) print(f"Test Loss: {test_loss}")

  • python: ストアする値を更新するコード

    pythonコードの質問です 入力は、画像のExcelシートのA列のようになっています 1行目:その後入力される単語の数 2行明以降:テキスト(ここでは野菜名) これに対して次のコードで「判定」をかけました #----------------------- #数値入力(入力される単語数) t = int(input()) flag = 0 store = 0 i = 0 for i in range(t): #野菜名判定 txt = input() #Tomatoの入力を1として変数flagに代入 if txt.count("Tomato") == 1: flag = 1 store = flag print("iは " + str(i) + "-----") print("判定 " + str(flag == 1 & (store - i) > 0)) print("storeは " + str(store)) i += 1 else: flag = 0 print("iは " + str(i) + "-----") print("判定 " + str(flag == 1 & (store - i) > 0)) print("storeは " + str(store)) i += 1 #----------------------- 2番め以降の入力を for i in range(t)で回し、"Tomato"がみつかると、flagに1を立てます そしてflagの値を、次に"Tomato"が出現するまでstoreに代入して保存 flag == 1 (Tomatoが出現した入力)and (store - i) > 0 となった場合にTrue それ以外はFalse 判定をさせようとしています "Tomato"が入力されても、一定期間はTrue判断にしたくないため、 (store - i) > 0 でジャッジしています ところがi == 7のとき、storeの値が本来storeで8になるべきところが、1のまま変化がおきていないため、本来"判定"がTrueであるべきがFalseとなります store値を上の条件「(store - i) > 0」で更新させたい つまり i が 7のとき、store は 8 ですが、コードのどこが間違っているのでしょうか 他のジャッジ方法でもかまいません

  • コード(Python)の解説をして頂きたいです

    このコードはスペースが2つ以上ある場合スペースを一つだけにする、そして文の最初と最後にスペースがあった場合そのスペースを消すというコードだということは理解出来たのですが、flgはなんの略なのかということと、ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans このコードのelse ansはどのような働きをしているのか分かりません。 もし宜しければ解説をして頂きたいです。 def removeExtraSpaces(theString): ans = '' flg = True for s in theString: if s == ' ': if flg: ans += s flg = False continue flg = True ans += s ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans return ans

  • Pythonのコードの解説をお願いします

    このコードはスペースが2つ以上ある場合スペースを一つだけにする、そして文の最初と最後にスペースがあった場合そのスペースを消すというものだとういうことは理解出来たのですが、なんでこういうコードを書いたぬぬかついんのか、 def removeExtraSpaces(theString): ans = '' flg = True for s in theString: if s == ' ': if flg: ans += s flg = False continue flg = True ans += s ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans return ans これを解説して

  • pythonの問題を解くのを助けていただきたいです

    スペースが2つ以上ある場合スペースを一つだけにする、そして文の最初と最後にスペースがあった場合そのスペースを消すというコードをこのコードをベースに書き換えていただくことは可能でしょうか? def removeExtraSpaces(theString): outSt = "" foundExtraSpaces = False for ch in theString: if ch = " ": foundExtraSpaces = True elif foundExtraSpaces == True: outSt += ch return outSt print(removeExtraSpaces(" Hello Joe ")) #この場合”Hello Joe”と出力されるはずです。