- 來源 | 願碼(ChainDesk.CN)內容編輯
- 願碼Slogan | 鏈接每一個程序員的故事
- 網站 | http://chaindesk.cn
- 願碼願景 | 打造全學科IT系統免費課程,助力小白用戶、初級工程師0成本免費系統學習、低成本進階,幫助BAT一線資深工程師成長並利用自身優點創造睡後收入。
- 官方公衆號 | 願碼 | 願碼服務號 | 區塊鏈部落
- 免費加入願碼全思惟工程師社羣 | 任一公衆號回覆「願碼」兩個字獲取入羣二維碼
本文閱讀時長:10min程序員
根據techopedia的說法, 智能城市是一個利用信息和通訊技術提升城市服務(如能源和交通)質量和性能,從而下降資源消耗、浪費和整體成本的城市。正則表達式
Deakin和 AI Waer列出了有助於定義智慧城市的四個因素:算法
所以,一個智能城市將是一個不只擁有信息通訊技術並且還以對居民產生積極影響的方式使用技術的城市。sql
人工智能(AI)與物聯網一塊兒,有可能解決城市人口過多帶來的主要挑戰,他們能夠幫助解決交通管理,醫療保健,能源危機和許多其餘問題。物聯網數據和人工智能技術能夠改善居住在智慧城市的公民和企業的生活。express
智能城市擁有大量用於人工智能的物聯網技術的用例,從保持更健康的環境到加強公共交通和安全。在下圖中,您能夠看到智能城市的一些用例:安全
人工智能和物聯網能夠實施智能交通解決方案,以確保智能城市的居民儘量安全,高效地從城市的一個點到另外一個點。網絡
洛杉磯是世界上最擁擠的城市之一,已經實施了智能交通解決方案來控制交通流量。它安裝了路面傳感器和閉路電視攝像機,可將有關交通流量的實時更新發送到中央交通管理系統。分析來自傳感器和攝像機的數據饋送,並通知用戶擁塞和交通訊號故障。2018年7月,該市在每一個交叉口進一步安裝了先進的交通控制器(ATC)櫃。啓用車輛到基礎設施(V2I通訊和5G鏈接,這使他們可以與具備紅綠燈信息功能的汽車進行通訊,例如奧迪A4或Q7。嵌入傳感器的自動車輛的發佈能夠提供車輛的位置和速度,他們能夠直接與智能交通訊號燈通訊,防止擁堵。此外,使用歷史數據,可預測將來流量並用於防止任何可能的擁塞。app
生活在城市中的任何人都能感覺到尋找停車位的困難,特別是在假日期間。智能停車能夠緩解這個問題。經過將路面傳感器嵌入停車位的地面,智能停車解決方案能夠肯定停車位是空閒仍是佔用,並建立實時停車地圖。dom
Adelaide市於2018年2月安裝了智能停車系統,他們還推出了移動應用程序:Park Adelaide,它將爲用戶提供準確和實時的停車信息。該應用程序能夠爲用戶提供遠程定位,支付甚至延長停車會話的能力。智能停車系統旨在改善交通流量,減小交通擁堵並減小碳排放。ide
在三藩市交通局(SAFTA)實施SFpark智能泊車系統。他們使用無線傳感器來檢測計量空間中的實時停車位佔用狀況。SFpark於2013年推出,平日溫室氣體排放量減小了25%,交通量降低,司機的搜索時間減小了50%。
在倫敦,威斯敏斯特Westminster市還在2014年與Machina Research合做創建了智能停車系統。 早些時候,司機不得不平均等待12分鐘,致使擁堵和污染,但自智能停車系統安裝以來,沒有必要等待,司機可使用手機找到可用的停車位。
其餘用例包括智能廢物管理,智能警務,智能照明和智能治理。
創建一個智能城市不是一天的業務,也不是一我的或組織的工做。它須要許多戰略合做夥伴,領導者甚至公民的合做。智能社區能夠作些什麼呢?爲咱們提供職業或創業機會的領域是什麼?
任何物聯網平臺都必須知足如下要求:
除此以外,還會出現有關安全和隱私的問題,服務提供商必須確保這些智能服務不會對公民的健康構成任何威脅。服務自己應易於使用,以便公民能夠採用。
如你所見,這提供了一系列工做機會,特別是AI工程師。須要處理物聯網生成的數據,而且要真正從中受益,咱們須要超越監控和基本分析。將須要AI工具來識別傳感器數據中的模式和隱藏的相關性。使用ML/AI工具分析歷史傳感器數據有助於識別趨勢並基於它們建立預測模型。而後,這些模型能夠由向IoT設備的執行器發送命令的控制應用程序使用。
構建智能城市的過程將是一個迭代過程,每次迭代都會增長更多的處理和分析。如今讓咱們來看一下AI供電的物聯網解決方案的例子。
舊金山市也有一個開放數據門戶網站,提供來自不一樣部門的數據。在本節中,咱們採用數據集提供來自舊金山全部社區的犯罪報告約12年(從2003年1月至2015年5月),並訓練模型以預測發生的犯罪類別。有39個謹慎的犯罪類別,所以它是一個多類別的分類問題。
咱們將使用Apache的PySpark並使用其易於使用的文本處理功能來處理此數據集。因此第一步是建立一個 Spark會話:
第一步是導入必要的模塊並建立 Spark會話:
from pyspark.ml.classification import LogisticRegression as LR from pyspark.ml.feature import RegexTokenizer as RT from pyspark.ml.feature import StopWordsRemover as SWR from pyspark.ml.feature import CountVectorizer from pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorAssembler from pyspark.ml import Pipeline from pyspark.sql.functions import col from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Crime Category Prediction") \ .config("spark.executor.memory", "70g") \ .config("spark.driver.memory", "50g") \ .config("spark.memory.offHeap.enabled",True) \ .config("spark.memory.offHeap.size","16g") \ .getOrCreate()
咱們加載csv文件中可用的數據集:
data = spark.read.format("csv"). \ options(header="true", inferschema="true"). \ load("sf_crime_dataset.csv") data.columns
數據包含九列:[Dates,Category,Descript,DayOfWeek,PdDistrict,Resolution,Address, X,Y]咱們只須要Category和Descript字段來訓練和測試數據集:
drop_data = ['Dates', 'DayOfWeek', 'PdDistrict', 'Resolution', 'Address', 'X', 'Y'] data = data.select([column for column in data.columns if column not in drop_data]) data.show(5)
如今咱們擁有的數據集有文本數據,所以咱們須要執行文本處理。三個重要的文本處理步驟是:標記數據,刪除停用詞並將單詞向量化爲向量。
咱們將使用RegexTokenizer將使用正則表達式將句子標記爲單詞列表,由於標點符號或特殊字符不會添加任何含義,咱們只保留包含字母數字內容的單詞。有一些詞語the會在文本中很是常見,但不會爲語境添加任何含義。使用內置類刪除這些單詞(也稱爲停用單詞)StopWordsRemover。
使用標準停用詞["http","https","amp","rt","t","c","the"]。最後使用了 CountVectorizer,將單詞轉換爲數字向量(要素)。這些數字特徵將用做訓練模型的輸入。數據的輸出是Category列,但它也是36個不一樣類別的文本,所以,咱們須要將其轉換爲一個熱編碼向量:PySpark StringIndexer能夠很容易地使用它。將全部這些轉換添加到咱們的數據中Pipeline:
# regular expression tokenizer re_Tokenizer = RT(inputCol="Descript", outputCol="words", pattern="\\W") # stop words stop_words = ["http","https","amp","rt","t","c","the"] stop_words_remover = SWR(inputCol="words", outputCol="filtered").setStopWords(stop_words) # bag of words count count_vectors = CountVectorizer(inputCol="filtered", outputCol="features", vocabSize=10000, minDF=5) #One hot encoding the label label_string_Idx = StringIndexer(inputCol = "Category", outputCol = "label") # Create the pipeline pipeline = Pipeline(stages=[re_Tokenizer, stop_words_remover, count_vectors, label_string_Idx]) # Fit the pipeline to data. pipeline_fit = pipeline.fit(data) dataset = pipeline_fit.transform(data) dataset.show(5)
如今,數據準備就緒,咱們將其分爲訓練和測試數據集:
# Split the data randomly into training and test data sets. (trainingData, testData) = dataset.randomSplit([0.7, 0.3], seed = 100) print("Training Dataset Size: " + str(trainingData.count())) print("Test Dataset Size: " + str(testData.count()))
讓咱們爲它擬合一個簡單的邏輯迴歸模型。在測試數據集上,它提供97%的準確性。
# Build the model logistic_regrssor = LR(maxIter=20, regParam=0.3, elasticNetParam=0) # Train model with Training Data model = logistic_regrssor.fit(trainingData) # Make predictions on Test Data predictions = model.transform(testData) # evaluate the model on test data set evaluator = MulticlassClassificationEvaluator(predictionCol="prediction") evaluator.evaluate(predictions)
人工智能正在改變城市運營,交付和維護公共設施的方式,從照明和交通到鏈接和醫療服務。可是,選擇不能有效協同工做或與其餘城市服務相結合的技術可能會妨礙採用。要讓城市真正受益於智能城市提供的潛力,須要改變思惟方式。當局應該更長時間地規劃並跨越多個部門。
巴塞羅那市是一個典型的例子,物聯網系統的實施創造了約47,000個就業機會,節省了4250萬歐元的水費,並經過智能停車每一年額外增長了3650萬歐元。咱們能夠很容易地看到,城市能夠從利用人工智能的物聯網解決方案的技術進步中獲益匪淺。基於人工智能的物聯網解決方案能夠幫助鏈接城市,管理多個基礎設施和公共服務。
在本文中,咱們研究了從智能照明和道路交通到鏈接公共交通和廢物管理的智能城市的用例。同時學會了使用有助於對舊金山12年期間犯罪報告中的數據進行分類的工具。若是你還想學習到更多的乾貨及實戰案例,記得關注「願碼」公衆號!