socket网络编程实现远程备份

#!/usr/bin/env python
#-*-coding:utf-8-*-
#GUI设计与构建 客户端建立from tkinter import *
from tkinter.ttk import *
import socket
import struct#启动服务
def start(host,port):pass#我的控件
class MyFrame(Frame):def __init__(self,root):super().__init__(root)self.root=rootself.grid()#网格化布局self.remote_ip='127.0.0.1'self.remote_ports=10888self.remote_ip_var=StringVar()self.remote_ports_var=IntVar()self.bak_src_var=StringVar#图形化界面self.init_components()def init_components(self):proj_name=Label(self,text="远程备份客户机")#位置proj_name.grid(columnspan=2)serv_ip_label=Label(self,text="服务地址: ")#第一行第一列serv_ip_label.grid(row=1)self.serv_ip=Entry(self,textvariable=self.remote_ip_var)#默认ip地址self.remote_ports_var.set(self.remote_ip)self.serv_ip.grid(row=1,column=1)#端口号框serv_port_label=Label(self,text="服务端口: ")serv_port_label.grid(row=2)self.serv_port=Entry(self,textvariable=self.remote_ports_var)#默认的ports窗口self.remote_ports_var.set(self.remote_ports)self.serv_port.grid(row=2,column=1)src_label=Label(self,text="备份的目标:")src_label.grid(row=3)self.bak_src=Entry(self,textvariable=self.bak_src_var)self.bak_src.grid(row=3,column=1)#定以端口号self.start_serv_btn=Button(self,text="开始备份",command=self.start_send)self.start_serv_btn.grid(row=4)self.start_serv_btn=Button(self,text="退出程序",command=self.root.destroy)self.start_serv_btn.grid(row=4,column=1)#开始发送的方法def start_send(self):print(self.remote_ip_var.get(),self.remote_ports_var.get())print('start---')if __name__=='__main__':root=Tk()root.title('远程备份客户机')root.resizable(False,False)app=MyFrame(root)#启动程序app.mainloop()#!/usr/bin/env python
#-*-coding:utf-8-*-
#GUI设计与构建
from tkinter import *
from tkinter.ttk import *
import socket
import struct#启动服务
def start(host,port):pass#我的控件
class MyFrame(Frame):def __init__(self,root):super().__init__(root)self.root=rootself.grid()self.local_ip='127.0.0.1'self.serv_ports=[10888,20888,30888]#图形化界面self.init_components()def init_components(self):proj_name=Label(self,text="远程备份服务器")#位置proj_name.grid(columnspan=2)serv_ip_label=Label(self,text="服务地址")#第一行第一列serv_ip_label.grid(row=1)#下拉地址框self.serv_ip=Combobox(self,values=self.get_ipaddr())#默认ip地址self.serv_ip.set(self.local_ip)self.serv_ip.grid(row=1,column=1)#端口号框serv_port_label=Label(self,text="服务端口")serv_port_label.grid(row=2)self.serv_port=Combobox(self,values=self.serv_ports)#默认的ports窗口self.serv_port.set(self.serv_ports[0])self.serv_port.grid(row=2,column=1)#定以端口号self.start_serv_btn=Button(self,text="启动服务",command=self.start_serv)self.start_serv_btn.grid(row=3)self.start_serv_btn=Button(self,text="退出服务",command=self.root.destroy)self.start_serv_btn.grid(row=3,column=1)#获取本地ip地址def get_ipaddr(self):host_name=socket.gethostname()info=socket.gethostbyname_ex(host_name)info=info[2]#企业IP地址info.append(self.local_ip)return info
#启动服务器的方法def start_serv(self):print(self.serv_ip.get(),self.serv_port.get())start(self.serv_ip.get(),self.serv_port.get())if __name__=='__main__':root=Tk()root.title('备份服务器')root.resizable(False,False)app=MyFrame(root)#启动程序app.mainloop()#!/usr/bin/env python
#-*-coding:utf-8-*-
#GUI设计与构建 客户端具体建立from tkinter import *
from tkinter.ttk import *
import socket
import struct
import os
import pickle#获取文件信息
def get_files_info(path):if not path or not os.path.exists(path):return Nonefiles=os.walk(path)infos=[]file_paths=[]for p,ds,fs in files:for f in fs:file_name=os.path.join(p,f)file_size=os.stat(file_name).st_sizefile_paths.append(file_name)file_name=file_name[len(path)+1:]infos.append((file_size,file_name))return infos,file_paths
#向服务器发送信息
def send_files_infos(my_sock,infos):fmt_str='Q'#二进制编码infos_bytes=pickle.dumps(infos)infos_bytes_len=len(infos_bytes)infos_len_pack=struct.pack(fmt_str,infos_bytes_len)#二进制编码#发送长度my_sock.sendall(infos_len_pack)#发送信息my_sock.sendall(infos_bytes)#发送文件
def send_files(my_sock,file_path):f=open(file_path,'rb')try:while True:data=f.read(1024)if data:my_sock.sendall(data)else:breakfinally:f.close()
#接收从服务器发来的信息
def get_bak_info(my_sock,size=7):info=my_sock.recv(size)print(info.decode('utf-8'))#开始备份
def start(host,port,src):if not os.path.exists(src):print('备份的目标不存在!')return s=socket.socket()s.connect((host,port))path=srcfile_infos,file_paths=get_files_info(path)send_files_infos(s,file_infos)for fp in file_paths:send_files(s,fp)print(fp)get_bak_info(s)s.close()#我的控件
class MyFrame(Frame):def __init__(self,root):super().__init__(root)self.root=rootself.grid()#网格化布局self.remote_ip='127.0.0.1'self.remote_ports=10888self.remote_ip_var=StringVar()self.remote_ports_var=IntVar()self.bak_src_var=StringVar()#图形化界面self.init_components()def init_components(self):proj_name=Label(self,text="远程备份客户机")#位置proj_name.grid(columnspan=2)serv_ip_label=Label(self,text="服务地址: ")#第一行第一列serv_ip_label.grid(row=1)self.serv_ip=Entry(self,textvariable=self.remote_ip_var)#默认ip地址self.remote_ip_var.set(self.remote_ip)self.serv_ip.grid(row=1,column=1)#端口号框serv_port_label=Label(self,text="服务端口: ")serv_port_label.grid(row=2)self.serv_port=Entry(self,textvariable=self.remote_ports_var)#默认的ports窗口self.remote_ports_var.set(self.remote_ports)self.serv_port.grid(row=2,column=1)src_label=Label(self,text="备份的目标:")src_label.grid(row=3)self.bak_src=Entry(self,textvariable=self.bak_src_var)self.bak_src.grid(row=3,column=1)#定以端口号self.start_serv_btn=Button(self,text="开始备份",command=self.start_send)self.start_serv_btn.grid(row=4)self.start_serv_btn=Button(self,text="退出程序",command=self.root.destroy)self.start_serv_btn.grid(row=4,column=1)#开始发送的方法def start_send(self):print(self.remote_ip_var.get(),self.remote_ports_var.get())print('start---')start(self.remote_ip_var.get(),int(self.remote_ports_var.get()),self.bak_src_var.get())if __name__=='__main__':root=Tk()root.title('远程备份客户机')root.resizable(False,False)app=MyFrame(root)#启动程序app.mainloop()#!/usr/bin/env python
#-*-coding:utf-8-*-
#GUI设计与构建 实现一个客户端的备份问题
from tkinter import *
from tkinter.ttk import *
import socket
import struct
import os
import pickleBAK_PATH=r'/home/acm506/桌面/备份/'#接收文件信息
def recv_unit_data(clnt,infos_len):data=b''if 0<infos_len<=1024:data+=clnt.recv(infos_len)else:while True:if infos_len>1024:data+=clnt.recv(1024)infos_len-=1024else:data+=clnt.recv(infos_len)breakreturn data#得到文件的大小和名称
def get_files_info(clnt):fmt_str='Q'#文件的大小headsize=struct.calcsize(fmt_str)data =clnt.recv(headsize)infos_len=struct.unpack(fmt_str,data)[0]#二进制编码data=recv_unit_data(clnt,infos_len)return pickle.loads(data)#创建文件的路径
def mk_path(filepath):paths=filepath.split(os.path.sep)[:-1]p=BAK_PATHfor path in paths:p=os.path.join(p,path)if not os.path.exists(p):os.mkdir(p)
#接收固定长度的长度的文件
def recv_file(clnt,infos_len,filepath):mk_path(filepath)filepath=os.path.join(BAK_PATH,filepath)f=open(filepath,'wb+')try:if 0<infos_len<=1024:data=clnt.recv(infos_len)f.write(data)else:while True:if infos_len>1024:data=clnt.recv(1024)f.write(data)infos_len-=1024else:data=clnt.recv(infos_len)f.write(data)#写入文件breakexcept:print('error')else:return Truefinally:f.close()#向客户端发送成功的消息
def send_echo(clnt,res):if res:clnt.sendall(b'success')else:clnt.sendall(b'failure')#启动服务
def start(host,port):if not os.path.exists(BAK_PATH):os.mkdir(BAK_PATH)st=socket.socket()st.bind((host,port))st.listen(1)client,addr=st.accept()#得到文件列表files_lst=get_files_info(client)#每个元素是个元组for size,filepath in files_lst:res=recv_file(client,size,filepath)#备份成功send_echo(client,res)client.close()st.close()#我的控件
class MyFrame(Frame):def __init__(self,root):super().__init__(root)self.root=rootself.grid()self.local_ip='127.0.0.1'self.serv_ports=[10888,20888,30888]#图形化界面self.init_components()def init_components(self):proj_name=Label(self,text="远程备份服务器")#位置proj_name.grid(columnspan=2)serv_ip_label=Label(self,text="服务地址")#第一行第一列serv_ip_label.grid(row=1)#下拉地址框self.serv_ip=Combobox(self,values=self.get_ipaddr())#默认ip地址self.serv_ip.set(self.local_ip)self.serv_ip.grid(row=1,column=1)#端口号框serv_port_label=Label(self,text="服务端口")serv_port_label.grid(row=2)self.serv_port=Combobox(self,values=self.serv_ports)#默认的ports窗口self.serv_port.set(self.serv_ports[0])self.serv_port.grid(row=2,column=1)#定以端口号self.start_serv_btn=Button(self,text="启动服务",command=self.start_serv)self.start_serv_btn.grid(row=3)self.start_serv_btn=Button(self,text="退出服务",command=self.root.destroy)self.start_serv_btn.grid(row=3,column=1)#获取本地ip地址def get_ipaddr(self):host_name=socket.gethostname()info=socket.gethostbyname_ex(host_name)info=info[2]#企业IP地址info.append(self.local_ip)return info
#启动服务器的方法def start_serv(self):print(self.serv_ip.get(),self.serv_port.get())start(self.serv_ip.get(),int(self.serv_port.get()))if __name__=='__main__':root=Tk()root.title('备份服务器')root.resizable(False,False)app=MyFrame(root)#启动程序app.mainloop()
#!/usr/bin/env python
#-*-coding:utf-8-*-
#GUI设计与构建 实现多个客户端的备份问题,多线程问题,压缩备份,socketserver模块
from tkinter import *
from tkinter.ttk import *
import socket
import struct
import os
import pickle
import threading,time
import socketserverBAK_PATH=r'/home/acm506/桌面/备份/'#接收文件信息
def recv_unit_data(clnt,infos_len):data=b''if 0<infos_len<=1024:data+=clnt.recv(infos_len)else:while True:if infos_len>1024:data+=clnt.recv(1024)infos_len-=1024else:data+=clnt.recv(infos_len)breakreturn data#得到文件的大小和名称
def get_files_info(clnt):fmt_str='Q?'#文件的大小headsize=struct.calcsize(fmt_str)data =clnt.recv(headsize)#文件长度及压缩编码infos_len,compress=struct.unpack(fmt_str,data)#二进制编码data=recv_unit_data(clnt,infos_len)return pickle.loads(data),compress#创建文件的路径
def mk_path(filepath):paths=filepath.split(os.path.sep)[:-1]p=BAK_PATHfor path in paths:p=os.path.join(p,path)if not os.path.exists(p):os.mkdir(p)#得到压缩文件的长度
def get_compress_size(clnt):fmt_str="Q"size=struct.calcsize(fmt_str)data=clnt.recv(size)size,=struct.unpack(fmt_str,data)return size#接收固定长度的长度的文件
def recv_file(clnt,infos_len,filepath,compress):mk_path(filepath)filepath=os.path.join(BAK_PATH,filepath)if compress:infos_len=get_compress_size(clnt)filepath=''.join([os.path.splitext(filepath)[0],'.tar.gz'])f=open(filepath,'wb+')try:if 0<infos_len<=1024:data=clnt.recv(infos_len)f.write(data)else:while True:if infos_len>1024:data=clnt.recv(1024)f.write(data)infos_len-=1024else:data=clnt.recv(infos_len)f.write(data)#写入文件breakexcept:print('error')else:return Truefinally:f.close()#向客户端发送成功的消息
def send_echo(clnt,res):if res:clnt.sendall(b'success')else:clnt.sendall(b'failure')def client_operate(client):#得到文件列表files_lst,compress=get_files_info(client)#每个元素是个元组for size,filepath in files_lst:res=recv_file(client,size,filepath,compress)#备份成功send_echo(client,res)client.close()class BakHdl(socketserver.StreamRequestHandler):def handle(self):client_operate(self.request)
#开启服务
def start(host,port):server=socketserver.ThreadingTCPServer((host,port),BakHdl)s=threading.Thread(target=server.serve_forever)s.start()return server#我的控件
class MyFrame(Frame):def __init__(self,root):super().__init__(root)self.root=rootself.grid()self.server=Noneself.local_ip='127.0.0.1'self.serv_ports=[10888,20888,30888]#图形化界面self.init_components()def init_components(self):proj_name=Label(self,text="远程备份服务器")#位置proj_name.grid(columnspan=2)serv_ip_label=Label(self,text="服务地址")#第一行第一列serv_ip_label.grid(row=1)#下拉地址框self.serv_ip=Combobox(self,values=self.get_ipaddr())#默认ip地址self.serv_ip.set(self.local_ip)self.serv_ip.grid(row=1,column=1)#端口号框serv_port_label=Label(self,text="服务端口")serv_port_label.grid(row=2)self.serv_port=Combobox(self,values=self.serv_ports)#默认的ports窗口self.serv_port.set(self.serv_ports[0])self.serv_port.grid(row=2,column=1)#定以端口号self.start_serv_btn=Button(self,text="启动服务",command=self.start_serv)self.start_serv_btn.grid(row=3)self.start_exit_btn=Button(self,text="退出服务",command=self.exit)self.start_exit_btn.grid(row=3,column=1)def exit(self):if self.server:threading.Thread(target=self.server.shutdown).start()self.root.destroy()#获取本地ip地址def get_ipaddr(self):host_name=socket.gethostname()info=socket.gethostbyname_ex(host_name)info=info[2]#企业IP地址info.append(self.local_ip)return info
#启动服务器的方法def start_serv(self):if not os.path.exists(BAK_PATH):os.mkdir(BAK_PATH)#print(self.serv_ip.get(),self.serv_port.get())#start(self.serv_ip.get(),int(self.serv_port.get()))host=self.serv_ip.get()port=int(self.serv_port.get())#serv_th=threading.Thread(target=start,args=(host,port))#serv_th.start()self.server=start(host,port)self.start_serv_btn.state(['disabled',])if __name__=='__main__':root=Tk()root.title('备份服务器')root.resizable(False,False)app=MyFrame(root)#启动程序app.mainloop()#!/usr/bin/env python
#-*-coding:utf-8-*-
#GUI设计与构建 客户端具体建立from tkinter import *
from tkinter.ttk import *
import socket
import struct
import os
import pickle
import threading,time
import tarfile,tempfile#获取文件信息
def get_files_info(path):if not path or not os.path.exists(path):return Nonefiles=os.walk(path)infos=[]file_paths=[]for p,ds,fs in files:for f in fs:file_name=os.path.join(p,f)file_size=os.stat(file_name).st_sizefile_paths.append(file_name)file_name=file_name[len(path)+1:]infos.append((file_size,file_name))return infos,file_paths
#向服务器发送信息
def send_files_infos(my_sock,infos,compress):fmt_str='Q?'infos_bytes=pickle.dumps(infos)infos_bytes_len=len(infos_bytes)#二进制编码infos_len_pack=struct.pack(fmt_str,infos_bytes_len,compress)#二进制编码#发送长度my_sock.sendall(infos_len_pack)#发送信息my_sock.sendall(infos_bytes)#发送文件
def send_files(my_sock,file_path,compress):if not compress:f=open(file_path,'rb')else:f=tempfile.NamedTemporaryFile()#临时文件tar=tarfile.open(mode='w|gz',fileobj=f)tar.add(file_path)tar.close()f.seek(0)filesize=os.stat(f.name).st_sizefilesize_bytes=struct.pack('Q',filesize)my_sock.sendall(filesize_bytes)try:while True:data=f.read(1024)if data:my_sock.sendall(data)else:breakfinally:f.close()
#接收从服务器发来的信息
def get_bak_info(my_sock,size=7):info=my_sock.recv(size)print(info.decode('utf-8'))#开始备份
def start(host,port,src,compress):if not os.path.exists(src):print('备份的目标不存在!')return s=socket.socket()s.connect((host,port))path=srcfile_infos,file_paths=get_files_info(path)send_files_infos(s,file_infos,compress)for fp in file_paths:send_files(s,fp,compress)print(fp)get_bak_info(s)# time.sleep(2)s.close()#我的控件
class MyFrame(Frame):def __init__(self,root):super().__init__(root)self.root=rootself.grid()#网格化布局self.remote_ip='127.0.0.1'self.remote_ports=10888self.remote_ip_var=StringVar()self.remote_ports_var=IntVar()self.bak_src_var=StringVar()self.compress_var=BooleanVar()#图形化界面self.init_components()def init_components(self):proj_name=Label(self,text="远程备份客户机")#位置proj_name.grid(columnspan=2)serv_ip_label=Label(self,text="服务地址: ")#第一行第一列serv_ip_label.grid(row=1)self.serv_ip=Entry(self,textvariable=self.remote_ip_var)#默认ip地址self.remote_ip_var.set(self.remote_ip)self.serv_ip.grid(row=1,column=1)#端口号框serv_port_label=Label(self,text="服务端口: ")serv_port_label.grid(row=2)self.serv_port=Entry(self,textvariable=self.remote_ports_var)#默认的ports窗口self.remote_ports_var.set(self.remote_ports)self.serv_port.grid(row=2,column=1)src_label=Label(self,text="备份的目标:")src_label.grid(row=3)self.bak_src=Entry(self,textvariable=self.bak_src_var)self.bak_src.grid(row=3,column=1)tar_label=Label(self,text="压缩备份: ")tar_label.grid(row=4)self.compress_on=Checkbutton(self,text="开启压缩",variable=self.compress_var,onvalue=1,offvalue=0)self.compress_on.grid(row=4,column=1)#定以端口号self.start_serv_btn=Button(self,text="开始备份",command=self.start_send)self.start_serv_btn.grid(row=5)self.start_exit_btn=Button(self,text="退出程序",command=self.root.destroy)self.start_exit_btn.grid(row=5,column=1)#开始发送的方法def start_send(self):#print(self.remote_ip_var.get(),self.remote_ports_var.get())#print('start---')#start(self.remote_ip_var.get(),int(self.remote_ports_var.get()),self.bak_src_var.get())host=self.remote_ip_var.get()port=self.remote_ports_var.get()compress=self.compress_var.get()src=self.bak_src_var.get()self.bak_src_var.set('')t=threading.Thread(target=start,args=(host,int(port),src,compress))t.start()if __name__=='__main__':root=Tk()root.title('远程备份客户机')root.resizable(False,False)app=MyFrame(root)#启动程序app.mainloop()#!/usr/bin/env python
#-*-coding:utf-8-*-
#GUI设计与构建 实现多个客户端的备份问题,多线程问题,压缩备份
from tkinter import *
from tkinter.ttk import *
import socket
import struct
import os
import pickle
import threading,timeSERV_RUN_FLAG=True
flag_lock=threading.Lock()BAK_PATH=r'/home/acm506/桌面/备份/'#接收文件信息
def recv_unit_data(clnt,infos_len):data=b''if 0<infos_len<=1024:data+=clnt.recv(infos_len)else:while True:if infos_len>1024:data+=clnt.recv(1024)infos_len-=1024else:data+=clnt.recv(infos_len)breakreturn data#得到文件的大小和名称
def get_files_info(clnt):fmt_str='Q?'#文件的大小headsize=struct.calcsize(fmt_str)data =clnt.recv(headsize)#文件长度及压缩编码infos_len,compress=struct.unpack(fmt_str,data)#二进制编码data=recv_unit_data(clnt,infos_len)return pickle.loads(data),compress#创建文件的路径
def mk_path(filepath):paths=filepath.split(os.path.sep)[:-1]p=BAK_PATHfor path in paths:p=os.path.join(p,path)if not os.path.exists(p):os.mkdir(p)#得到压缩文件的长度
def get_compress_size(clnt):fmt_str="Q"size=struct.calcsize(fmt_str)data=clnt.recv(size)size,=struct.unpack(fmt_str,data)return size#接收固定长度的长度的文件
def recv_file(clnt,infos_len,filepath,compress):mk_path(filepath)filepath=os.path.join(BAK_PATH,filepath)if compress:infos_len=get_compress_size(clnt)filepath=''.join([os.path.splitext(filepath)[0],'.tar.gz'])f=open(filepath,'wb+')try:if 0<infos_len<=1024:data=clnt.recv(infos_len)f.write(data)else:while True:if infos_len>1024:data=clnt.recv(1024)f.write(data)infos_len-=1024else:data=clnt.recv(infos_len)f.write(data)#写入文件breakexcept:print('error')else:return Truefinally:f.close()#向客户端发送成功的消息
def send_echo(clnt,res):if res:clnt.sendall(b'success')else:clnt.sendall(b'failure')def client_operate(client):#得到文件列表files_lst,compress=get_files_info(client)#每个元素是个元组for size,filepath in files_lst:res=recv_file(client,size,filepath,compress)#备份成功send_echo(client,res)client.close()#启动服务
def start(host,port):if not os.path.exists(BAK_PATH):os.mkdir(BAK_PATH)st=socket.socket()st.settimeout(1)#超时1sst.bind((host,port))st.listen(1)flag_lock.acquire()#获得资源的使用while SERV_RUN_FLAG:flag_lock.release()client=Nonetry:client,addr=st.accept()except socket.timeout:passif client:t=threading.Thread(target=client_operate,args=(client,))t.start()flag_lock.acquire()st.close()#我的控件
class MyFrame(Frame):def __init__(self,root):super().__init__(root)self.root=rootself.grid()self.local_ip='127.0.0.1'self.serv_ports=[10888,20888,30888]#图形化界面self.init_components()def init_components(self):proj_name=Label(self,text="远程备份服务器")#位置proj_name.grid(columnspan=2)serv_ip_label=Label(self,text="服务地址")#第一行第一列serv_ip_label.grid(row=1)#下拉地址框self.serv_ip=Combobox(self,values=self.get_ipaddr())#默认ip地址self.serv_ip.set(self.local_ip)self.serv_ip.grid(row=1,column=1)#端口号框serv_port_label=Label(self,text="服务端口")serv_port_label.grid(row=2)self.serv_port=Combobox(self,values=self.serv_ports)#默认的ports窗口self.serv_port.set(self.serv_ports[0])self.serv_port.grid(row=2,column=1)#定以端口号self.start_serv_btn=Button(self,text="启动服务",command=self.start_serv)self.start_serv_btn.grid(row=3)self.start_exit_btn=Button(self,text="退出服务",command=self.root.destroy)self.start_exit_btn.grid(row=3,column=1)#获取本地ip地址def get_ipaddr(self):host_name=socket.gethostname()info=socket.gethostbyname_ex(host_name)info=info[2]#企业IP地址info.append(self.local_ip)return info
#启动服务器的方法def start_serv(self):#print(self.serv_ip.get(),self.serv_port.get())#start(self.serv_ip.get(),int(self.serv_port.get()))host=self.serv_ip.get()port=int(self.serv_port.get())serv_th=threading.Thread(target=start,args=(host,port))serv_th.start()self.start_serv_btn.state(['disabled',])#定义自己图形化界面窗口
class MyTk(Tk):def destroy(self):global SERV_RUN_FLAGwhile True:if flag_lock.acquire():SERV_RUN_FLAG=Falseflag_lock.release()breaksuper().destroy()if __name__=='__main__':root=MyTk()root.title('备份服务器')root.resizable(False,False)app=MyFrame(root)#启动程序app.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python正则表达式使用

模板代码&#xff1a; import re #python 自1.5版本增加了re模块&#xff0c;它提供了Perl风格的正则表达式模式 print(re.match(www, www.baidu.com).span()) #在起初位置匹配 line "Cats are smarter than dogs" matchObj re.match( r(.*) are (.*?) .*, line,…

Q-学习,马克尔决策过程:强化学习

马尔可夫决策过程 马尔可夫决策过程是基于马尔可夫过程理论的随机动态系统的最优决策过程。马尔可夫决策过程是序贯决策的主要研究领域。它是马尔可夫过程与确定性的动态规划相结合的产物&#xff0c;故又称马尔可夫型随机动态规划&#xff0c;属于运筹学中数学规划的一个分支…

python对象使用

模板代码&#xff1a; class People:所有员工的基类#构造函数def __init__(self, user_id, user_name):self.user_id user_idself.user_name user_name#析构函数def __del__(self):class_name self.__class__.__name__print(class_name, 销毁)def get_info(self):print(&qu…

机器学习——决策树算法

机器学习——决策树算法原理及案例 标签&#xff1a; 机器学习决策树信息增益基尼指数模型评估 2016-05-04 15:31 43984人阅读 评论(1) 收藏 举报 分类&#xff1a; 机器学习&#xff08;10&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不…

python运算符重载

重载符模板代码&#xff1a; class Vector:def __init__(self, a, b):self.a aself.b bdef __str__(self):return Vector (%d, %d) % (self.a, self.b)def __add__(self, other):return Vector(self.a other.a, self.b other.b) v1 Vector(2, 10) v2 Vector(5, -2) prin…

机器学习——决策树的实现

#!/usr/bin/env python #-*-coding:utf-8-*- #决策树的建立&#xff0c;训练测试&#xff0c; from sklearn.feature_extraction import DictVectorizer import csv from sklearn import preprocessing from sklearn import tree from sklearn.externals.six import StringIO#读…

python练习代码保存

#codingutf-8 print(中国人) """ Python 保留字&#xff1a;and, exec, not, assert, finally, or, break, for, pass, class, from, print, continue, global, raise, def, if, return, del, import, try, elif, in, while, else, is, with, except, lambda, …

邻近算法(KNN算法)

邻近算法 锁定本词条由“科普中国”百科科学词条编写与应用工作项目 审核 。邻近算法&#xff0c;或者说K最近邻(kNN&#xff0c;k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻&#xff0c;就是k个最近的邻居的意思&#xff0c;说的是每个样本…

python机器学习常用包下载安装以及使用案例汇总

python安装教程&#xff08;Windows系统,python3.7为例&#xff09; https://blog.csdn.net/weixin_40844416/article/details/80889165 在pycharm中切换python版本的方法 https://blog.csdn.net/sgfmby1994/article/details/77876873 Windows下零基础scikit-learn安装(这种方式…

KNN算法的实现

#!/usr/bin/env python #-*-coding:utf-8-*- #knn 的具体实现 import csv import random import math import operator #导入数据集 文件名&#xff0c;split区分那个集 def loadDataset(filename,split,trainintset[],testSet[]):with open(filename,rb) as csvfile:linescsv.…

python机器学习常用包

总结了一些常用的工具&#xff1a; Numpy | 必用的科学计算基础包&#xff0c;底层由C实现&#xff0c;计算速度快。Pandas | 提供了高性能、易用的数据结构及数据分析工具。 seaborn | 数据可视化 NLTK | 自然语言工具包&#xff0c;集成了很多自然语言相关的算法和资源。Sta…

支持向量机(SVM)算法

支持向量机&#xff08;SVM&#xff09;算法支持向量机(support vector machine)是一种分类算法&#xff0c;通过寻求结构化风险最小来提高学习机泛化能力&#xff0c;实现经验风险和置信范围的最小化&#xff0c;从而达到在统计样本量较少的情况下&#xff0c;亦能获得良好统计…

python文件操作以及相对路径和绝对路径问题

绝对路径&#xff1a; PROJECT_ROOT os.path.dirname(os.path.realpath(__file__))#获取项目根目录path os.path.join(PROJECT_ROOT,"data\\edge\\0_fuse.txt") #文件路径edgeMap np.loadtxt(path)相对路径&#xff1a; path "./data/edge/98_fuse.txt&quo…

支持向量机(SVM)的实现

#!/usr/bin/env python #-*-coding:utf-8-*- #支持向量积的使用&#xff0c;建立超平面 from sklearn import svmx[[2,0],[1,1],[2,3]]y[0,0,1] clfsvm.SVC(kernellinear) #kernellinear线性核函数clf.fit(x,y)print(clf)print(clf.support_vectors_) #支持向量 print(clf.supp…

【kaggle入门题一】Titanic: Machine Learning from Disaster

原题&#xff1a; Start here if... Youre new to data science and machine learning, or looking for a simple intro to the Kaggle prediction competitions. Competition Description The sinking of the RMS Titanic is one of the most infamous shipwrecks in hist…

神经网络NN算法

1. 背景: 1.1 以人脑中的神经网络为启发&#xff0c;历史上出现过很多不同版本1.2 最著名的算法是1980年的 backpropagation 2. 多层向前神经网络(Multilayer Feed-Forward Neural Network)2.1 Backpropagation被使用在多层向前神经网络上2.2 多层向前神经网络由以下部分组成&a…

python利用jieba(textRank、TFIDF)提取关键字

from jieba import analyse print("tfidf: ") tfidf analyse.extract_tags text "线程是程序执行时的最小单位&#xff0c;它是进程的一个执行流&#xff0c;\是CPU调度和分派的基本单位&#xff0c;一个进程可以由很多个线程组成&#xff0c;\线程间共享进程…

神经网络算法实现

1. 关于非线性转化方程(non-linear transformation function) sigmoid函数(S 曲线)用来作为activation function:1.1 双曲函数(tanh)tanh是双曲函数中的一个&#xff0c;tanh()为双曲正切。在数学中&#xff0c;双曲正切“tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来公式…

神经网络算法的实例

1.简单非线性关系数据集测试&#xff08;XOR)X: Y0 0 00 1 11 0 11 1 0Code:#!/usr/bin/env python #-*-coding:utf-8-*- #神经网络测试的例子 #简单非线性关系数据集测试(XOR)异或的运算 f…