Python Flask 機械学習に基づく国家 + 上海気象データ収集および予測視覚化システム
1. プロジェクトの紹介
この情報技術の隆盛の時代に、当社は Python Flask をベースとした全国および上海の気象データ収集、予測、視覚化システムを立ち上げました。気候変動がますます世界的な注目を集めるにつれ、正確な気象データと視覚的表示の重要性がますます高まっています。このシステムは、高度なテクノロジーと革新的な機能を使用して、リアルタイムの気象情報と過去の気象データに対するユーザーのニーズを満たし、一般大衆、企業、政府がより多くの情報に基づいた意思決定を行えるように支援します。
技術レベルでは、Python Web クローラー テクノロジーを最大限に活用して、中国気象ネットワークなどの信頼できるデータ ソースから全国のリアルタイム気象データと上海の過去の気象データを取得し、データの適時性と正確性を確保しています。データ クリーニングと MySQL データベース ストレージを通じて、データの一貫性と信頼性を保証します。同時に、HTML、CSS、JavaScript などのフロントエンド テクノロジやフロントエンド フレームワーク Layui は、シンプルで使いやすいユーザー インタラクション インターフェイスを構築し、ユーザーがデータを簡単に取得して分析できるようにします。バックエンドは Flask を使用して強力なデータ インターフェイスを構築し、PyMySQL ライブラリを通じてデータとデータベース間の対話を実現します。データ予測に関しては、scikit-learn、pandas、numpy などの機械学習ライブラリを使用して重線形回帰モデルを構築し、ユーザーに正確な気象分析と予測結果を提供します。
全国リアルタイム気象データや上海過去気象データの取得、全国総合気象データや全国都市気象データのビジュアル表示Echarts、重回帰予測機能など、豊富で多様な機能を備えています。気象データ。さらに、ユーザーデータのセキュリティとプライバシーを確保するために、ユーザーのログインおよび登録機能を提供します。データ管理機能により、ユーザーは個人に合わせたデータ表示やお知らせの閲覧も可能になります。多次元のデータ管理を通じて、ユーザーは全国の気象データを深く理解し、より正確な意思決定を行うことができます。
将来に目を向けると、このような全国および上海の気象データ収集、予測、視覚化システムは幅広い発展の見通しを持っています。気候変動がますます深刻になる中、当社はシステムの最適化と改善を継続し、より高度な機械学習アルゴリズムとデータ分析手法を導入し、天気予報の精度と適時性を向上させます。同時に、社会のあらゆる部門が気候変動によってもたらされる課題に対処できるよう、国中、さらには世界をカバーする気象データ サービス システムを形成するために、より多くの都市や地域に徐々に拡大していきます。これにより、一般大衆、企業、政府に対し、より包括的かつ実用的な気象情報が提供され、スマートシティと持続可能な開発に向けた確かな一歩を踏み出すことができます。
2. 開発環境
開発環境 | バージョン/ツール |
---|---|
ニシキヘビ | 3.6.8 |
開発ツール | PyCharm |
オペレーティング·システム | ウィンドウズ10 |
メモリ要件 | 8GB 以上 |
ブラウザ | Firefox (推奨)、Google Chrome (推奨)、Edge |
データベース | MySQL 8.0 (推奨) |
データベースツール | Navicat プレミアム 15 (推奨) |
プロジェクトの枠組み | FLASK、scikit-learn |
3. プロジェクト技術
Python:開発言語として、バックエンド ロジックの作成とデータ処理に使用されます。
Flask: Python の Web フレームワーク。バックエンド データ インターフェイスを構築し、HTTP リクエストを処理するために使用されます。
PyMySQL: Python と MySQL データベース間の対話でデータを保存および読み取るために使用されます。
Web クローラー テクノロジー:中国気象ネットワークなどのデータ ソースから全国のリアルタイム気象データと上海の過去の気象データを取得するために使用されます。
データ クリーニング:クロールされた生データを前処理して、データの正確性と一貫性を確保するために使用されます。
Echarts:データをグラフに変換してユーザーに表示するために使用される JavaScript データ視覚化ライブラリ。
LAYUI:ユーザーフレンドリーな対話型インターフェイスを構築するための軽量のフロントエンド UI フレームワーク。
JavaScript:フロントエンドの対話を実装し、ユーザー入力を処理するために使用されます。
HTML と CSS:フロントエンド インターフェイスとスタイル デザインの構築に使用されます。
scikit-learn、pandas、および numpy:データの予測と分析のための Python のデータ処理および機械学習ライブラリ。
AJAX:フロントエンドとバックエンドのデータ対話を実現し、バックエンド データ インターフェイスを非同期的に要求するために使用されます。
MySQL:データを永続化するためのデータベース管理システム。
これらの技術を連携させることで、システムはデータ収集、予測、可視化、ユーザーインタラクションなどの豊富な機能を実現し、ユーザーに正確で実用的な気象情報を提供します。
4. 機能構造
システムの機能構造には次のモジュールが含まれます。
データ収集機能モジュール:
全国のリアルタイム気象データ収集: China Weather Network などのデータ ソースから全国のリアルタイム気象データを取得します。
上海の過去の気象データの収集: データ分析と視覚的な表示のために、データ ソースから上海の過去の気象データを取得します。
データ前処理ストレージモジュール:
データ処理: 収集された生の気象データを前処理して無効なデータを削除し、データの正確性と一貫性を確保します。
データベース ストレージ: 後続のデータ分析と予測のために、前処理された気象データを MySQL データベースに保存します。
データ可視化機能モジュール:
全国の包括的な気象データの視覚化: Echarts 視覚化ライブラリを使用して、全国のリアルタイム気象データをチャートや地図の形式で表示し、ユーザーが全国の気象状況を直感的に理解できるようにします。
全国の都市の気象データの視覚化: リアルタイムの気象データを使用して地図上の各都市の位置をマークし、対応するグラフを描画して、ユーザーが各都市の気象状況を確認できるようにします。
上海の過去の気象データの視覚化: Echarts を使用して過去の気象データを折れ線グラフ、棒グラフなどの形式で表示し、ユーザーが一定期間にわたる上海の天気の変化を確認できるようにします。
データ予測機能モジュール:
気象分析と予測: scikit-learn、pandas、numpy などの機械学習ライブラリを使用して複数の線形回帰モデルを構築し、気象データを分析および予測し、ユーザーに正確な気象分析と予測結果を提供します。
ユーザーログインおよび登録機能モジュール:
ユーザー登録: ユーザーデータのセキュリティを確保するために、ユーザー名とパスワードを入力して登録できるようにします。
ユーザーログイン: 登録ユーザーは、ユーザー名とパスワードを入力してログインし、パーソナライズされた気象データの表示および予測機能を利用できます。
データ管理機能モジュール:
ユーザーデータ管理: ユーザーデータの完全性と安全性を確保するために、ユーザー情報を追加、削除、変更、確認する機能を実装します。
お知らせデータ管理:お知らせ機能があれば、お知らせ情報の公開、編集、削除が可能です。
全国気象データ管理: データ収集機能から取得した全国リアルタイム気象データが正しく保存され、必要に応じて更新およびクリーンアップできることを確認します。
これらの機能モジュールは相互に連携して、全国および上海の完全な気象データ収集、予測、視覚化システムを形成し、ユーザーに包括的な気象情報を提供し、情報に基づいた意思決定をサポートします。ユーザーはインターフェイスを通じて対話的にリアルタイム データを取得したり、履歴データを表示したり、予測機能を使用して将来の気象変化の傾向を取得したりできます。このシステムは、変化する気象科学とユーザーのニーズに適応するために、継続的に拡張および最適化できる可能性もあります。
論文の目次の結果は次のとおりです。
5. 実行中のスクリーンショット
システムログインページ
ユーザー登録ページ
バックエンド管理ホームページ
上海全国都市気象可視化
上海各地区可視化 上海各地区
都市歴史気象可視化ユーザー管理ページ**お知らせ管理ページ国家気象管理ページ上海気象管理ページ上海各種地域過去気象管理ページシステムクローラログ管理ページ
6. 機能実現
機械学習予測コアコード
# 预测数据(cityname, record_date, high, low, weather, wd, ws)
def predict(cityname, record_date, high, low, weather, wd, ws):
city = cityname
cityname, record_date, high, low, weather, wd, ws =deal_data.transformer_item(cityname, record_date, high, low,weather, wd, ws)
next_input = [float(cityname), float(record_date), float(high), float(low), float(weather), float(wd), float(ws)]
result = []
for i in range(1, 11):
record_date, record_str = deal_data.getNextDay(i)
pred_y = model.predict([next_input])[0]
next_input = [float(cityname), float(record_date)]
next_input.extend(pred_y)
result.append(deal_data.de_transformer_item(city, record_str, pred_y[0], pred_y[1], pred_y[2], pred_y[3], pred_y[4]))
return result
データベース接続コアコードの作成
def connect(self):
self.conn = pymysql.connect(
host=DB_CONFIG["host"],
port=DB_CONFIG["port"],
user=DB_CONFIG["user"],
passwd=DB_CONFIG["passwd"],
db=DB_CONFIG["db"],
charset=DB_CONFIG["charset"],
cursorclass=pymysql.cursors.DictCursor)
self.cursor = self.conn.cursor()
上海都市可視化データインターフェース
@app.route('/data/history/weather', methods=['post', 'get'])
def data_history_category():
city = request.args.get('city')
result_weather = data_service.weather_category_data(city)
result_wd = data_service.wd_category_data(city)
result_ws = data_service.ws_category_data(city)
result_temp = data_service.temp_data(city)
return {
"weather_data": result_weather, "wd_data": result_wd, "ws_data": result_ws, "temp_data": result_temp}
上海市データ構築業法
# 气象分类
def weather_category_data(city):
sqlManager = SQLManager()
key_sql = "select weather from historyweather where cityname ='" + city + "' group by weather"
value_sql = "select count(id) as `value`,weather as `name` from historyweather where cityname ='" + city + "' group by weather"
key_data = sqlManager.get_list(key_sql)
value_data = sqlManager.get_list(value_sql)
x_data = [k['weather'] for k in key_data]
sqlManager.close()
return {
'x': x_data, 'y': value_data}
# 风向分类
def wd_category_data(city):
sqlManager = SQLManager()
key_sql = "select wd from historyweather where cityname ='" + city + "' group by wd"
value_sql = "select count(id) as `value`,wd as `name` from historyweather where cityname ='" + city + "' group by wd"
key_data = sqlManager.get_list(key_sql)
value_data = sqlManager.get_list(value_sql)
x_data = [k['wd'] for k in key_data]
sqlManager.close()
return {
'x': x_data, 'y': value_data}
# 风速分类
def ws_category_data(city):
sqlManager = SQLManager()
key_sql = "select ws from historyweather where cityname ='" + city + "' group by ws"
value_sql = "select count(id) as `value`,ws as `name` from historyweather where cityname ='" + city + "' group by ws"
key_data = sqlManager.get_list(key_sql)
value_data = sqlManager.get_list(value_sql)
x_data = [str(k['ws']) + '级' for k in key_data]
y_data = [{
'value': i['value'], 'name': str(i['name']) + '级'} for i in value_data]
sqlManager.close()
return {
'x': x_data, 'y': y_data}
7. データベース設計
テーブル名: 都市
フィールド名 | データの種類 | 必要ですか? | コメント |
---|---|---|---|
ID | int(11) | はい | |
市の名前 | varchar(50) | いいえ | 都市名 |
都市コード | varchar(50) | いいえ | 市外局番 |
city_py | varchar(50) | いいえ | 都市ピンイン |
テーブル名: currentweather
フィールド名 | データの種類 | 必要ですか? | コメント |
---|---|---|---|
ID | int(11) | はい | |
州 | varchar(255) | いいえ | 州 |
市の名前 | varchar(50) | いいえ | 都市名 |
記録日 | 日付 | いいえ | 天気の時間 |
記録タイム | varchar(50) | いいえ | リアルタイムの時間 |
温度 | int(11) | いいえ | 現在の温度 |
WD | varchar(20) | いいえ | 風向き |
うーん | int(11) | いいえ | 豊麗 |
そうだね | int(11) | いいえ | 風速 |
SD | int(11) | いいえ | 湿度 |
天気 | varchar(20) | いいえ | 天気 |
雨 | 10 進数(10,2) | いいえ | 降雨 |
アキ | int(11) | いいえ | 空気の質 |
作成時間 | 日付時刻 | はい | データ作成時間 |
は古い | int(11) | いいえ | 1 つの古いデータ、0 つの新しいデータ |
テーブル名: 詳細天気
フィールド名 | データの種類 | 必要ですか? | コメント |
---|---|---|---|
ID | int(11) | はい | |
州 | varchar(255) | いいえ | 州 |
市の名前 | varchar(50) | いいえ | 都市名 |
記録日 | 日付 | いいえ | 天気の時間 |
記録タイム | varchar(50) | いいえ | リアルタイムの時間 |
温度 | int(11) | いいえ | 現在の温度 |
WD | varchar(20) | いいえ | 風向き |
うーん | int(11) | いいえ | 豊麗 |
そうだね | int(11) | いいえ | 風速 |
SD | int(11) | いいえ | 湿度 |
天気 | varchar(20) | いいえ | 天気 |
雨 | 10 進数(10,2) | いいえ | 降雨 |
アキ | int(11) | いいえ | 空気の質 |
作成時間 | 日付時刻 | はい | データ作成時間 |
は古い | int(11) | いいえ | 1 つの古いデータ、0 つの新しいデータ |
テーブル名:historyweather
フィールド名 | データの種類 | 必要ですか? | コメント |
---|---|---|---|
ID | int(11) | はい | |
州 | varchar(255) | いいえ | 州 |
市の名前 | varchar(50) | いいえ | 都市名 |
記録日 | 日付 | いいえ | 天気の時間 |
高い | int(11) | いいえ | 最高気温 |
低い | int(11) | いいえ | 最低温 |
天気 | varchar(20) | いいえ | 天気 |
WD | varchar(20) | いいえ | 風向き |
うーん | int(11) | いいえ | 風力 |
作成時間 | 日付時刻 | はい | データ作成時間 |
テーブル名: お知らせ
フィールド名 | データの種類 | 必要ですか? | コメント |
---|---|---|---|
ID | int(11) | はい | |
タイトル | varchar(255) | いいえ | お知らせタイトル |
コンテンツ | 長文 | いいえ | 発表内容 |
ユーザー名 | varchar(50) | いいえ | 出版社 |
作成時間 | 日付時刻 | いいえ | リリースタイム |
テーブル名: スロッグ
フィールド名 | データの種類 | 必要ですか? | コメント |
---|---|---|---|
ID | int(11) | はい | |
ログ | varchar(255) | いいえ | |
作成時間 | 日付時刻 | いいえ |
8. ソースコードの取得
Yunyuan Practical Combat の公式 Web サイトには、ソース コード、インストール チュートリアル ドキュメント、プロジェクト紹介ドキュメント、およびその他の関連ドキュメントがアップロードされており、以下の公式 Web サイトからプロジェクトを入手できます。