2021-02-20

python教程(僅用于自己學(xué)習(xí)) 來源:w3school

python 語法

-縮進(jìn)
用于切分不同的代碼塊

if 1+1:
 print("2")
if 3>1:
    print("3比1大")

-變量
存放數(shù)據(jù)值的容器
字符串變量可以用單引號(hào)或雙引號(hào)聲明

-變量名稱
必須以字母或者下劃線開頭,不能以數(shù)字開頭
只能包含字母數(shù)字下劃線
區(qū)分大小寫

-多個(gè)變量賦值

x,y,z="lisa","rose","jennie"
print(x)
print(y)
print(z)

-輸出變量
print(數(shù)值)
print("text"+字符串)

x=1
y=2
z=x+y
print(z)

x="wyb"
print("The beauty is " + x)

-全局變量
在函數(shù)外部創(chuàng)建的變量,可以供函數(shù)外部和內(nèi)部的使用

x = "awesome"
def myfunc():
  print("Python is " + x)
myfunc()

在函數(shù)內(nèi)部創(chuàng)建全局變量使用global

def myfunc():
 global x
 x = "awesome"
 myfunc()
print("Python is " + x)

-數(shù)據(jù)類型
type()獲取數(shù)據(jù)類型

--數(shù)字類型
int,float,complex
int()呕缭、float() 和 complex() 可以轉(zhuǎn)換數(shù)據(jù)類型
random()表示隨機(jī)數(shù)
format()可以組合數(shù)字與字符,將他們放在占位符{}里,自動(dòng)郵件中使用到

x=1005
txt="My birthday is {}"
print(txt.format(x))

--布爾類型
True,False

--數(shù)組類型
列表(List)乌助,有序可更改的集合拓轻,允許重復(fù);列表用方括號(hào)[ ]編寫
元組(Tuple),有序不可更改的集合,允許重復(fù);元組用括號(hào)()編寫
集合(Set)裕膀,無序無索引的集合,無重復(fù);集合用花括號(hào){}編寫
詞典(Dictionary)勇哗,無序可變有索引的集合昼扛,無重復(fù);字典用花括號(hào){}編寫欲诺,擁有鍵和值

列表(List)與numpy 中數(shù)組(Array)的區(qū)別:
list中的元素的數(shù)據(jù)類型可不一樣抄谐;array中的元素的數(shù)據(jù)類型必須一樣;
list中的元素不可進(jìn)行四則運(yùn)算扰法;array可以斯稳;
lsit 比array具有更多的存儲(chǔ)空間;
兩者均可通過索引查找元素

  • List
x=["xz","wyb","bxg","zz","bb"]
print(x)
#len()查看列表的長度
print(len(x))

#負(fù)索引從最后一個(gè)開始
print(x[-1])

#通過起始點(diǎn)(包含)到終點(diǎn)(不包含)來指定索引范圍
print(x[0:3])

#替換值
x[0]="zz"
print(x)

#append() 將項(xiàng)目添加至列表的末尾
x.append("yb")
print(x)

#insert(指定索引處迹恐,"項(xiàng)目")
x.insert(3,"szd")
print(x)

#remove(指定項(xiàng)目)挣惰,pop(指定索引),del 刪除指定的項(xiàng)目
x.remove("zz")
print(x)
x.pop(0)
print(x)
del x[-1]
print(x)

#clear()清空列表
x.clear()
print(x)

#copy()復(fù)制列表
x=["bjyx","xz","wyb","szd"]
y=x.copy()
print(y)

#list()復(fù)制列表
z=list(x)
print(z)

#合并列表殴边,直接+ 或者將其中一個(gè)列表的項(xiàng)目追加到另一個(gè)項(xiàng)目中或者extend()將列表元素添加至末尾
a=x+y
print(a)

x=["xz","wyb","zz","bb"]
y=["bjyx","zsww","lsfy","szd"]
for a in y:
 x.append(a)
print(x)

x.extend(y)
print(x)

#list()構(gòu)造新列表憎茂,雙括號(hào)
bjyx=list(("xz","wyb","zz","bb"))
print(bjyx)

#sort()排序
x=list(("5","1","8","3","3"))
x.sort()
print(x)
  • 元組(tuple)
a=("wyb","xz","zz","bb","szd")
print(a)
#返回元組第1個(gè)項(xiàng)目
print(a[0])
#更改元組,將元組轉(zhuǎn)換成列表再進(jìn)行更改
b=list(a)
b[0]="yb"
a=tuple(b)
print(a)
#遍歷元組a的項(xiàng)目
for x in a:
print(x)
#創(chuàng)建一個(gè)有項(xiàng)目的元組,如果只有一個(gè)項(xiàng)目锤岸,需要加逗號(hào),
b=("b","j","y","x","s","z","d")
c=("bjyxszd",)
#元組無法更改竖幔,只能完全刪除元組用 del
del c
#合并元組用+
c=a+b
print(c)
#構(gòu)建新的元組,tuple(()) 兩個(gè)括號(hào)
d=tuple(("b","j","y","x"))
print(d)
  • 集合(set)
a={"s","z","d"}
print(a)
#add()添加項(xiàng)目
a.add("bjyx")
print(a)
#update添加多項(xiàng)
a.update(["wyb","xz","zz"])
print(a)
#remove()刪除項(xiàng)目
a.remove("zz")
print(a)
a.clear()
del a
#union()合并兩個(gè)集合
#set(())創(chuàng)建新的集合是偷,雙括號(hào)
a=set(("xz","wyb","zz","bb"))
c=a.union(b)
print(c)
  • 字典(dictionary)
a={"name":"wyb"
   ,"gender":"male"
   ,"age":24
   ,"job":"actor"
  }
#通過引用鍵名來查找項(xiàng)目或者使用get()方法
x=a["name"]
print(x)

y=a.get("job")
print(y)
#通過鍵名來更改值
a["job"]="singer"
print(a)
#使用values()返回字典里的值
for x in a.values():
 print(x)
#使用items()返回字典里的鍵和值
for y in a.items():
 print(y)
#通過增加新的索引鍵來添加新項(xiàng)目
a["works"]="EOEO"
print(a)
#pop(),del刪除指定鍵名的項(xiàng)
a.pop("works")
print(a)
del a["age"]
print(a)
#popitem()刪除最后插入的項(xiàng)目
a.popitem()
print(a)
#clear()清空字典里的項(xiàng)目
a.clear()
print(a)
#copy()復(fù)制字典
a=dict(name="xz",gender="male",age=29)
print(a)

-循環(huán)

  • if
a=1
b=3
if a > b:
    print("a>b")
elif a<b:
    print("a<b")
else:
    print("a=b")
  • while
#預(yù)先設(shè)置索引變量i=1,遞增i,當(dāng)i=3時(shí)拳氢,循環(huán)停止
i=1
while i<7:
    print(i)
    if i==3:
        break
    i += 1
#遞增i,當(dāng)i=3時(shí),停止當(dāng)前迭代蛋铆,繼續(xù)下一個(gè)
i = 1
while i < 7:
    i += 1
    if i == 3:
        continue
    print(i)
  • for
    用于迭代序列(元組馋评,列表,字典刺啦,集合等)留特,不需要預(yù)先設(shè)置索引變量
x=["b","j","y","x","s","z","d"]
for y in x:
    print(y)

#當(dāng)遇到j(luò)時(shí),停止迭代玛瘸,返回b j 
for y in x:
    print(y)
    if y=="j":
        break

#與上不同的是先停止迭代再打印蜕青,此時(shí)只返回j
for y in x:
    if y=="j":
        break
    print(y)

#continue,遇到j(luò)時(shí),停止當(dāng)前迭代繼續(xù)下一個(gè)迭代
for y in x:
    if y=="j":
        continue
    print(y)

#range()函數(shù)糊渊,默認(rèn)從0開始右核,遞增1,并以指定的數(shù)字結(jié)束
#返回0-9的值
for x in range(10):
    print(x)
#range(起始值渺绒,結(jié)束值贺喝,增量)
for x in range(3,15,3):
    print(x)

#嵌套循環(huán)磷瘤,外循環(huán)沒迭代一次,內(nèi)循環(huán)將執(zhí)行一次
x=["b","j","y","x"]
y=["x","z","d"]
for a in x:
    for b in y:
        print(a,b)

-函數(shù)
將參數(shù)傳遞到函數(shù)中搜变,函數(shù)將參數(shù)作為結(jié)果返回
用def來定義函數(shù)
參數(shù)在函數(shù)括號(hào)里指定,可以添加任何參數(shù)针炉,用逗號(hào)隔開

函數(shù)與方法的區(qū)別:

  • 函數(shù)分類:
    內(nèi)置函數(shù)
    自定義函數(shù)
    匿名函數(shù)
    遞歸函數(shù)
  • 方法分類:
    普通方法
    私有方法
    屬性方法
    特殊方法
    類方法
    靜態(tài)方法
  • 作用域
    函數(shù):函數(shù)作用后挠他,通過賦值等方法修改變量的值不會(huì)被保留
    方法:用方法對(duì)變量的修改的值會(huì)保留
  • 調(diào)用方式
    函數(shù):函數(shù)名()
    方法:對(duì)象.方法名()
def my_func(a,b,c):
    print(a+b*c)
my_func(1,2,3)

#以什么類型發(fā)送到函數(shù),到達(dá)函數(shù)內(nèi)仍是該類型
def my_func(wyb):
    for x in wyb:
        print(x)
wyb=["male","24","actor"]
my_func(wyb)

#return返回函數(shù)值
def my_func(a,b,c):
   return a+b*c
my_func(1,2,3)

#函數(shù)遞歸
#求一元二次方程的解
def my_func(a,b,c):
    if a==0:
        if b==0:
            if c==0:
                return("任意解")
            else:
                return("無解")
        else:
            result=-c/b
            return result
    elif a!=0:
        if b**2-4*a*c>=0:
            result1=(-b+(b**2-4*a*c)**0.5)/(2*a)
            result2=(-b-(b**2-4*a*c)**0.5)/(2*a)
            return(result1,result2)
        else:
            return("無解")
    print(result)
my_func(1,3,1)

-類與對(duì)象
類(Class):一個(gè)模板篡帕,通過類可以創(chuàng)建無數(shù)個(gè)具體實(shí)例
對(duì)象(object):類不能直接使用殖侵,通過類創(chuàng)建出的實(shí)例(又稱對(duì)象)才能使用
屬性:類中的所有變量為屬性
方法:類中的所有函數(shù);包括實(shí)例方法(該類的每個(gè)實(shí)例都可以調(diào)用的方法镰烧,只有實(shí)例才能調(diào)用對(duì)象方法拢军,有一個(gè)額外的參數(shù)self),類方法(將類本身作為對(duì)象進(jìn)行操作的方法怔鳖,類和實(shí)例都可以調(diào)用)茉唉,靜態(tài)方法(存在與類中的普通函數(shù),不會(huì)對(duì)實(shí)例進(jìn)行任何操作)

#內(nèi)置的 __init__() 函數(shù)结执,使用該函數(shù)將值賦值給對(duì)象屬性度陆,每次使用類創(chuàng)建新對(duì)象時(shí),都會(huì)自動(dòng)調(diào)用 __init__() 函數(shù)
#self參數(shù)献幔,是對(duì)類的當(dāng)前實(shí)例的引用懂傀,用于訪問該類的變量,必須是任意函數(shù)的首個(gè)參數(shù)蜡感,可任意命名
class bjyx:
    def __init__(self,name,age):
        self.name=name
        self.age=age        
b1=bjyx("wyb",24)
b2=bjyx("xz",30)
print(b1.name,b2.name)
#對(duì)象方法蹬蚁,在類bjyx中創(chuàng)建方法,在b1對(duì)象中執(zhí)行它
class bjyx:
    def __init__(self,name,age):
        self.name=name
        self.age=age 
    def myfunc(self):
     print("bjyx is "+ self.name)
b1=bjyx("wyb",24)
b2=bjyx("xz",30)
b1.myfunc()+b2.myfunc()

-繼承
允許繼承另一個(gè)類的所有屬性和方法

class bjyx:
    def __init__(self,name,age):
        self.name=name
        self.age=age 
    def myfunc(self):
     print("bjyx is "+ self.name)
class bx(bjyx):
 pass   #不向該類中添加任何其他屬性與方法
x1=bx("bb",24)
x2=bx("zz",30)
x1.myfunc()+x2.myfunc()

#如果在子類中添加一個(gè)與父類中的函數(shù)同名的方法郑兴,則將覆蓋父方法的繼承
class bjyx:
    def __init__(self,name,age):
        self.name=name
        self.age=age 
    def myfunc(self):
     print("bjyx is "+ self.name)
class bx(bjyx):
    def __init__(self,name,age,job):
      super().__init__(name, age)  #super函數(shù)自動(dòng)繼承父類的方法和屬性
      self.job=job
    
    def welcome(self):
     print("welcome",self.name,self.job,"to weibozhiye")
x1=bx("bb",24,"actor")
x2=bx("zz",30,"actor")
x1.myfunc()+x2.myfunc()

-模塊

#創(chuàng)建模塊犀斋,將所需代碼保存在calculation.py文件
def cal_func(a,b,c):
    if a==0:
        if b==0:
            if c==0:
                return("任意解")
            else:
                return("無解")
        else:
            result=-c/b
            return result
    elif a!=0:
        if b**2-4*a*c>=0:
            result1=(-b+(b**2-4*a*c)**0.5)/(2*a)
            result2=(-b-(b**2-4*a*c)**0.5)/(2*a)
            return(result1,result2)
        else:
            return("無解")
    print(result)


#通過import來使用模塊module_name.function_name
import calculation as cal
cal.cal_func(1,2,1)

-日期

#使用datetime模塊的datetime()類創(chuàng)建日期
#datetime()類需要三個(gè)參數(shù)來創(chuàng)建日期:年、月情连、日
import datetime as dt
x=dt.datetime(2021,1,1)
print(x)

#[strftime()方法](https://www.runoob.com/python/att-time-strftime.html)闪水,將日期對(duì)象格式化為可讀字符串的方法
import datetime as dt
x=dt.datetime(2021,2,5)
print(x.strftime("%Y-%m"))

-json
用于存儲(chǔ)和交換數(shù)據(jù)的語法,在數(shù)據(jù)庫存儲(chǔ)字段信息時(shí)使用蒙具,需要解析

#json.loads()方法球榆,解析json字符串,結(jié)果是Python字典dictionary
import json
x='{"name":"wyb","age":24,"job":"dancer"}'
y=json.loads(x)
print(y["name"])

#json.dumps()方法禁筏,將Python對(duì)象轉(zhuǎn)換為json字符串
import json
x={"name":"wyb","age":24,"job":"dancer"}
y=json.dumps(x)
print(y)

-RegEx
正則表達(dá)式是形成搜索模式的字符序列持钉,可用于檢查字符串是否包含指定的搜索模式
re模塊中的函數(shù):
findall:返回包含所有匹配項(xiàng)的列表
search:如果字符串中的任意位置存在匹配,則返回Match對(duì)象
split:返回在每次匹配時(shí) 拆分字符串的列表
sub:用字符串替換一個(gè)或多個(gè)匹配項(xiàng)

#findall()函數(shù)
#查找所有"a"
import re
txt="China is a great country"
x=re.findall("a",txt)
print(x)

#search()函數(shù)
#檢索字符串以查看它是否以"china"開頭并以"country"結(jié)尾
import re
txt="China is a great country"
x=re.search("^China.*country$",txt)
if (x):
    print("match")
else:
    print("no match")

#split()函數(shù)
#在每個(gè)字符處進(jìn)行拆分
import re
txt="wyb and xz are great actors"
x=re.split("\s",txt)
print(x)
#指定maxsplit參數(shù)來控制出現(xiàn)次數(shù)
import re
txt="wyb and xz are great actors"
x=re.split("\s",txt,3)
print(x)

#sub函數(shù)
#用數(shù)字10050805替換每個(gè)空白字符
import re
txt="wyb and xz are great actors"
x=re.sub("\s","10050805",txt)
print(x)
#通過指定count參數(shù)來控制替換次數(shù)
import re
txt="wyb and xz are great actors"
x=re.sub("\s","10050805",txt,2)
print(x)

python文件處理

open()函數(shù)有兩個(gè)參數(shù):文件名和模式

  • 四種打開文件的不同方法:
    "r":讀取-默認(rèn)值
    "a":追加篱昔,在原文件末尾追加
    "w":寫入每强,會(huì)覆蓋原文件
    "x":創(chuàng)建
#open()函數(shù)返回文件對(duì)象始腾,此對(duì)象有一個(gè)read()方法用于讀取文件的內(nèi)容,close()關(guān)閉文件
f = open("demofile.txt")
print(f.read())
f.close()

#在文件中追加內(nèi)容
x=open("E:/miki/coupang/bjyx.txt","a")
x.write("bjyx")
x=open("E:/miki/coupang/bjyx.txt","r")
print(x.read())

#創(chuàng)建新文件
y=open("D:/miki/coupang/wyb.txt","x")

#remove()刪除文件
#rmdir()刪除文件夾
import os
os.remove("E:/miki/coupang/wyb.txt")

Python NumPy

NumPy是用于處理數(shù)組的Python庫
NumPy旨在提供一個(gè)比傳統(tǒng)Python列表快50倍的數(shù)組對(duì)象,NumPy數(shù)組存儲(chǔ)在內(nèi)存中的一個(gè)連續(xù)位置空执,因此進(jìn)程可以非常有效地訪問和操縱他們

import numpy as np
arr=np.array([1,2,3,4,5])
print(arr)
print(type(arr))
NumPy中的數(shù)組對(duì)象稱為ndarray,將列表浪箭、元組或任何類似數(shù)組的對(duì)象傳遞給array()方法,然后它被轉(zhuǎn)換為ndarray

-數(shù)組中的維
數(shù)組深度(嵌套數(shù)組(將數(shù)組作為元素的數(shù)組))的一個(gè)級(jí)別

#ndim屬性,返回一個(gè)整數(shù)辨绊,表示數(shù)組的維數(shù)
import numpy as np
a=np.array(1)
b=np.array([1,2,3,4,5])
c=np.array([[1,2,3],[4,5,6]])
d=np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])
print(a.ndim)
print(b.ndim)
print(c.ndim)
print(d.ndim)
數(shù)組維數(shù)
#創(chuàng)建數(shù)組奶栖,用ndmin參數(shù)定義維數(shù)
import numpy as np
arr=np.array([1,2,3,4],ndmin=5)
print(arr)
print('number of dimensions:',arr.ndim)

創(chuàng)建數(shù)組

-NumPy數(shù)組索引
數(shù)組索引等同于訪問數(shù)組元素
索引號(hào)從0開始,第一個(gè)元素的索引為0门坷,第二個(gè)為1

import numpy as np
arr=np.array([1,2,3,4])
print(arr[0])

#訪問二維數(shù)組中的元素宣鄙,可以使用逗號(hào)分隔的整數(shù)表示元素的維數(shù)和索引
#訪問第一維中的第二個(gè)元素
import numpy as np
arr=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print('2nd element on 1st dim:',arr[0,1])

-裁切數(shù)組

#[start:end:step]
import numpy as np
arr=np.array([1,2,3,4,5])
print(arr[0:3:2])

-NumPy數(shù)組數(shù)據(jù)類型

#dtype屬性返回?cái)?shù)組的數(shù)據(jù)類型
import numpy as np
arr=np.array([1,2,3,4,5,6])
print(arr.dtype)

#用數(shù)據(jù)類型“字符串”創(chuàng)建數(shù)組
import numpy as np
arr=np.array([1,2,3,4,5,6],dtype='S')
print(arr.dtype)

-NumPy數(shù)組形狀

#shape屬性返回一個(gè)元組,每個(gè)索引具有相應(yīng)元素的數(shù)量
#(2,4)表示該數(shù)組為二維默蚌,每維有4個(gè)元素
import numpy as np
arr=np.array([[1,2,3,4,5,6],[2,4,3,4,5,6]])
print(arr.shape)

-NumPy數(shù)組排序

#sort() 函數(shù)排序
import numpy as np
arr=np.array([[1,2,3,4,5,6],[2,4,3,4,5,6]])
print(np.sort(arr))

-NumPy數(shù)組過濾

#使用布爾索引列表來進(jìn)行過濾冻晤,索引處的值為True則過濾到數(shù)組中,F(xiàn)alse則排除
import numpy as np
arr=np.array([1,2,3,4,56,25,61,23])
#新建一個(gè)空列表
filter_arr=[]
#遍歷arr中的每個(gè)元素
for element in arr:
    #如果元素可以被2整除绸吸,則將值設(shè)置為True,否則設(shè)置為False
    if element%2==0:
        filter_arr.append(True)
    else:
        filter_arr.append(False)
newarr=arr[filter_arr]
print(newarr)
print(filter_arr)

-NumPy隨機(jī)數(shù)
NumPy中提供了random模塊來處理隨機(jī)數(shù)

#randint()隨機(jī)整數(shù)鼻弧,rand()隨機(jī)浮點(diǎn)數(shù)
from numpy import random
x=random.rand(3,5)
print(x)
生成隨機(jī)數(shù)

-機(jī)器學(xué)習(xí)
數(shù)據(jù)的分布

#從均勻分布中隨機(jī)采樣numpy.random.uniform(low,high,size)
import numpy as np 
import matplotlib.pyplot as plt
x=np.random.uniform(0.0,1.0,500)
plt.hist(x,5)
plt.show()

#從正態(tài)分布中隨機(jī)采樣numpy.random.normal(mean,std,size)
import numpy as np 
import matplotlib.pyplot as plt
x=np.random.normal(0.0,1.0,500000)
plt.hist(x,100)
plt.show()

#散點(diǎn)圖pyplot.scatter(x,y),需要兩個(gè)長度相同的數(shù)組,一個(gè)數(shù)組用于 x 軸的值锦茁,另一個(gè)數(shù)組用于 y 軸的值
import matplotlib.pyplot as plt
x=np.random.normal(1,0.5,10000)
y=np.random.normal(2,0.5,10000)
plt.scatter(x,y)
plt.show()

正態(tài)分布

散點(diǎn)圖

-機(jī)器學(xué)習(xí)-線性回歸
線性回歸用于找變量與變量之間的關(guān)系温数,預(yù)測未來的趨勢

import matplotlib.pyplot as plt
from scipy import stats
x=[4,5,12,4,5,8,9,15,18,48,52,90]
y=[45,40,45,67,81,49,63,33,56,40,89,101]
#slope斜率,intercept截距,r相關(guān)性蜻势,p是否顯著,std_err標(biāo)準(zhǔn)差
#r-square在0-1之間撑刺,0表示不相關(guān),1表示完全相關(guān)握玛;p值看x與y的線性關(guān)系是否顯著够傍,<0.05則顯著相關(guān)
slope,intercept,r,p,std_err=stats.linregress(x,y)
def myfunc(x):
    return slope*x+intercept
#map(function,iterable,...)函數(shù),對(duì)函數(shù)function對(duì)給定的序列做映射;第一個(gè)參數(shù)function被每個(gè)元素調(diào)用挠铲,并返回每次function返回值的列表
mymodel=list(map(myfunc,x))
plt.scatter(x,y)
plt.plot(x,mymodel)
plt.show()
slope,intercept,r,p,std_err

線性回歸

-機(jī)器學(xué)習(xí)-多元回歸
y與x1,x2,x3,……多個(gè)變量之間的關(guān)系

#導(dǎo)入pandas模塊讀取csv文件,并返回一個(gè)DataFrame對(duì)象
import pandas as pd
#導(dǎo)入sklearn模塊使用 LinearRegression() 方法創(chuàng)建一個(gè)線性回歸對(duì)象
from sklearn import linear_model
df=pd.read_csv('E:/miki/cars.csv')
#將獨(dú)立值列表命名為大寫X,將相關(guān)值列表命名為小寫y
X=df[['Weight','Volume']]
y=df['CO2']
regr=linear_model.LinearRegression()
#fit()方法冕屯,將獨(dú)立值和從屬值作為參數(shù),并用描述這種關(guān)系的數(shù)據(jù)填充回歸對(duì)象
regr.fit(x,y)

predictedCO2=regr.predict([[2300,1300]])
print(predictedCO2)

-縮放
特征縮放:數(shù)據(jù)擁有不同的值拂苹,不同的度量安聘,需要將數(shù)據(jù)縮放成可以進(jìn)行比較的值
標(biāo)準(zhǔn)化:z = (x - u) / s 其中 z 是新值,x 是原始值瓢棒,u 是平均值浴韭,s 是標(biāo)準(zhǔn)差。

#StandardScaler()方法脯宿,返回帶有轉(zhuǎn)換數(shù)據(jù)集方法的scaler對(duì)象
import pandas as pd
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale=StandardScaler()
df=pd.read_csv('E:/miki/cars.csv')
x=df[['Weight','Volume']]
scaledX=scale.fit_transform(x)
print(scaledX)

fit(),transform(),fit_transform()
fit(x,y) 訓(xùn)練集的固有屬性
transform(x) 標(biāo)準(zhǔn)化
fit_transform()是兩者的結(jié)合

-評(píng)估模型
訓(xùn)練/測試:衡量一個(gè)模型準(zhǔn)確度念颈,將數(shù)據(jù)分為兩組,80%作為訓(xùn)練集连霉,20%作為測試集

#查看數(shù)據(jù)集
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(2)
x=np.random.normal(3,1,100)
y=np.random.normal(150,40,100)/x
plt.scatter(x,y)
plt.scatter(x,y)
plt.show()

#拆分訓(xùn)練/測試集
#數(shù)組裁切 [start:end:step]
train_x=x[:80]
train_y=y[:80]

test_x=x[80:]
test_y=y[80:]
#顯示測試集/訓(xùn)練集
plt.scatter(train_x,train_y)
plt.show()
plt.scatter(test_x,test_y)

#擬合數(shù)據(jù)集
#繪制多項(xiàng)式回歸線
import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)
x=numpy.random.normal(3,1,100)
y=numpy.random.normal(150,40,100)/x
train_x=x[:80]
train_y=y[:80]
test_x=x[80:]
test_y=y[80:]
#自由度是4榴芳,生成多項(xiàng)式對(duì)象
#poly1d(系數(shù)向量)
mymodel=numpy.poly1d(numpy.polyfit(train_x,train_y,4))
myline=numpy.linspace(0,6,100)

plt.scatter(train_x,train_y)
plt.plot(myline,mymodel(myline))
plt.show()

#計(jì)算訓(xùn)練集的擬合度R2
import numpy
from sklearn.metrics import r2_score
#seed(2)表示從第二堆種子數(shù)里挑選隨機(jī)數(shù)
numpy.random.seed(2)

x=numpy.random.normal(3,1,100)
y=numpy.random.normal(150,40,100)/x

train_x=x[:80]
train_y=y[:80]

test_x=x[80:]
test_y=y[80:]

#多項(xiàng)式擬合函數(shù)np.polyfit(x,y,num)
mymodel=numpy.poly1d(numpy.polyfit(train_x,train_y,4))
r2=r2_score(train_y,mymodel(train_x))
print(r2)

#計(jì)算測試集的擬合度
import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)
train_x=x[:80]
train_y=y[:80]
test_x=x[80:]
test_y=y[80:]
mymodel=numpy.poly1d(numpy.polyfit(train_x,train_y,4))
r2=r2_score(test_y,mymodel(test_x))
print(r2)

#預(yù)測值
print(mymodel(5))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嗡靡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子窟感,更是在濱河造成了極大的恐慌讨彼,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柿祈,死亡現(xiàn)場離奇詭異哈误,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谍夭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來憨募,“玉大人紧索,你說我怎么就攤上這事〔艘ィ” “怎么了珠漂?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尾膊。 經(jīng)常有香客問我媳危,道長,這世上最難降的妖魔是什么冈敛? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任待笑,我火速辦了婚禮,結(jié)果婚禮上抓谴,老公的妹妹穿的比我還像新娘暮蹂。我一直安慰自己,他們只是感情好癌压,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布仰泻。 她就那樣靜靜地躺著,像睡著了一般滩届。 火紅的嫁衣襯著肌膚如雪集侯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天帜消,我揣著相機(jī)與錄音棠枉,去河邊找鬼。 笑死泡挺,一個(gè)胖子當(dāng)著我的面吹牛术健,可吹牛的內(nèi)容都是我干的杀赢。 我是一名探鬼主播蕾久,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼摧玫,長吁一口氣:“原來是場噩夢啊……” “哼弱判!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起勘伺,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤跪腹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后飞醉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冲茸,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年缅帘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轴术。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钦无,死狀恐怖逗栽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情失暂,我是刑警寧澤彼宠,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站弟塞,受9級(jí)特大地震影響凭峡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜决记,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一摧冀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧系宫,春花似錦按价、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至往枷,卻和暖如春框产,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背错洁。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國打工秉宿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屯碴。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓描睦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親导而。 傳聞我的和親對(duì)象是個(gè)殘疾皇子忱叭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350